Newtonsoft.Json.JsonConvert.DeserializeObject 返回为 NULL

问题描述 投票:0回答:2

我从 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。我错过了什么?

c# json json.net
2个回答
0
投票

您的 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);

0
投票

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);
© www.soinside.com 2019 - 2024. All rights reserved.