我是ASP.NET新手,我正在try 向Yesno API发出GET请求.

但是,当try 反序列化JSON响应并将值赋给变量时,我得到的值为空值.

如有任何帮助,我们将不胜感激!

控制器代码:

    [RoutePrefix("api/YesNo")]
    public class YesNoController : ApiController
    {

        [Route("GetYesNo")]
        public HttpResponseMessage GetYesNo()
        {
            Uri loginUrl = new Uri("https://yesno.wtf/api");
            HttpClient client = new HttpClient();
            client.BaseAddress = loginUrl;

            YesNoModel YesNoData = new YesNoModel();
            var httpResponse = Request.CreateResponse(HttpStatusCode.OK);

            HttpResponseMessage response = client.GetAsync(client.BaseAddress).Result;
            if (response.IsSuccessStatusCode)
            {
                string data = response.Content.ReadAsStringAsync().Result;
                YesNoData = JsonConvert.DeserializeObject<YesNoModel>(data);
            }

            httpResponse.Content = new StringContent(JsonConvert.SerializeObject(YesNoData), Encoding.UTF8, "application/json");
            return httpResponse;
        }
    }
    class YesNoModel
    { 
        string answer { get; set; }
        bool forced { get; set; }
        string image { get; set; }
    }

postman 回复示例:

{
    "answer": "no",
    "forced": false,
    "image": "https://yesno.wtf/assets/no/20-56c4b19517aa69c8f7081939198341a4.gif"
}

调试过程中数据变量的值: data var value

调试过程中YesNoData变量的值: YesNoData var value

推荐答案

您需要将属性指定为公共属性,以便在反序列化中设置它们.

class YesNoModel
{
    public string answer { get; set; }
    
    public bool forced { get; set; }
    
    public string image { get; set; }
}

Csharp相关问答推荐

为什么使用DXGI输出复制和Direct 3D时捕获的图像数据全为零?

O(N)测试失败

我无法在Ubuntu下编译使用microsoft.extension.configurationbuilder jsonapi和mono mcs的c#应用程序

如何保持主摄像头视角保持一致?

如果存在对CodeAnalysis.CSharp的引用,则不能引用netStandard2.0库

ITypeLib2.GetLibStatistics()在C#中总是抛出AccessViolationException

如何模拟耐久任务客户端在统一测试和获取错误在调度NewsListationInstanceAsync模拟设置

AsNoTrackingWithIdentitySolutions()似乎不起作用?

Blazor Foreach仅渲染最后一种 colored颜色

查找表中的模式

使用Orleans进行的单元测试找不到接口的实现

方法从数据表中只 Select 一个条件?

如何将此方法参数化并使其更灵活?

单元测试:模拟返回空

如何在C#中创建VS代码中的控制台应用程序时自动生成Main方法

.NET并发词典交换值

从另一个不同 struct 的数组创建Newtonsoft.Json.Linq.J数组

具有以接口为其类型的属性的接口;类指定接口的实现,但无效

是否有必要在ASP.NET Core中注册可传递依赖项?

如何在.NET Maui中将事件与MVVM一起使用?