C# 如何将JSON从Web API反序列化到类
因此,我是JSON的初学者,很难将它从web API放到类中。我用邮递员做到了这一点:C# 如何将JSON从Web API反序列化到类,c#,json,dotnet-httpclient,C#,Json,Dotnet Httpclient,因此,我是JSON的初学者,很难将它从web API放到类中。我用邮递员做到了这一点: { "$id": "1", "id": 1, "name": "Quick Entry", "description": "General", "trackerNumber": 1, "taskType": 0, "priority": 1, "status": 0, "isRecurring": 1, "clientVisib
{
"$id": "1",
"id": 1,
"name": "Quick Entry",
"description": "General",
"trackerNumber": 1,
"taskType": 0,
"priority": 1,
"status": 0,
"isRecurring": 1,
"clientVisibility": null,
"dateCreated": "2015-05-04T11:45:58.867",
"dateModified": "2017-03-29T11:51:52.007",
"modifiedBySessionId": "f1a96bf3-7e08-4d44-b8a2-5eacf0adab01",
"hours": null,
"deliveryDate": null,
"discriminator": "",
"assignedToUserId": null,
"projectId": 1,
"clientId": 1,
"sortOrder": 4,
"isDeleted": false,
"folder": "33f16cea-7fb4-e511-80db-00155d001801",
"taskGroupId": 1,
"isNew": false
}
“task”是我创建的类的名称。这是我的代码:
using (var httpClient = new HttpClient { BaseAddress = new Uri("http://localhost:45552/") })
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);
var test = await httpClient.GetStringAsync("api/Tasks/1");
//task = JsonConvert.DeserializeObject<TaskInfo>(test);
Console.WriteLine(task.Name);
Console.ReadKey();
}
当我试图打印我的任务类时,会出现以下错误:
“将值{null}转换为类型'System.Int32'时出错。路径'clientVisibility',第1行,位置157。”您的问题是,您在C#类中将
clientVisibility
声明为int
而不是可为null的int
。应该是这样的:
[JsonProperty(PropertyName = "clientVisibility")]
public int? ClientVisibility { get; set; }
在JSON中,将属性作为null传递:
"clientVisibility": null
因此,C#class属性必须能够接受空值,正如我上面所示。这同样也适用于必须接受
null
的任何其他int
属性,例如Hours
是否有表示JSON的类?是的。因此,请取消对此行的注释task=JsonConvert.DeserializeObject(test)代码>这正是将字符串反序列化为已知类型的方法。我尝试过这样做,并尝试从该类中打印一些内容,但没有成功。我将为JSON添加我的类“它不工作”——为什么它不工作?我们需要详细信息来尝试和诊断您遇到的问题
"clientVisibility": null