我从 API 调用中返回以下字符串:
{
"result":
[
{
"sys_id":"12d199028752a9108ae38516dabb35d3"
}
]
}
我正试图将它反序列化到这个类中”
public class result
{
public string sys_id { get; set; }
}
我正在使用这个电话:
var x = Newtonsoft.Json.JsonConvert.DeserializeObject<result>(jsonString);
但是“x.sys_id”总是出现为 NULL。我错过了什么?
您的 JSON 建模一个包含
result
属性的对象,该属性包含一个数组,该数组包含一个具有 sys_id
属性的对象,它本身是一个字符串。但是,您的 result
类是针对最终对象的,即带有 sys_id
的对象。因此,您缺少一个级别:您需要一些东西来包含这些结果。
所以让我们定义一个新类:
public class Document // or whatever other name you want
{
public List<result> result { get; set; }
}
然后你可以反序列化它:
var x = JsonConvert.DeserializeObject<Document>(jsonString);
JSON响应的结构由一个对象组成,该对象具有
result
类型的属性array
,其中您有一个包含单个属性sys_id
的string
类型的对象。
因此,您需要将响应映射到如下内容:
public class Root // change name as necessary
{
[JsonProperty("result")]
public ICollection<ResultItem> Result { get; set; }
}
public class ResultItem // change name as necessary
{
[JsonProperty("sys_id")]
public string SysId { get; set; }
}
然后您可以将其用作:
var x = Newtonsoft.Json.JsonConvert.DeserializeObject<Root>(jsonString);