繁体   English   中英

使用JSON.NET问题反序列化JSON

[英]Deserialize JSON with JSON.NET issues

我一直在尝试使用JSON.Net反序列化C#中的JSON流

我有一个JObject'JO1',当我对该字符串内容执行JO1.ToString()时:

{
  "Successful": true,
  "Value": [
    {
      "no": "1",
      "name": "Accounting"
    },
    {
      "no": "2",
      "name": "Marketing"
    },
    {
      "no": "3",
      "name": "Information Technology"
    }
  ]
}

我尝试以下.NET代码无济于事。

public class main()
{
  public void main()
  {
   JObject jo = new JObject();
   jo = functionthatretrievestheJSONdata();

   List<departments> dt1 = JsonConvert.DeserializeObject<List<departments>>(jo.ToString());
  }
}

public class departments
{
    public int no { get; set; }
    public string name { get; set; }
}

有人可以给我正确的方向指示吗?

您将需要一个类来包装List<departments> ,如下所示:

public class DeserializedDepartments
{
    public bool Successful { get; set; }
    public List<departments> Value { get; set; }
}

所以您会像这样反序列化:

DeserializedDepartments dt1 =
    JsonConvert.DeserializeObject<DeserializedDepartments>(jo.ToString());

现在你的List<departments>是在Valuedt1 ; dt1.Value

您没有考虑到列表是附加到另一个对象的数组。

您有一个对象,该对象的布尔值称为Successful ,而部门的数组称为Value

尝试这个:

public class main()
{
    public void main()
    {
        JObject jo = new JObject();
        jo = functionthatretrievestheJSONdata();

        Results dt1 = JsonConvert.DeserializeObject<Results>(jo.ToString());
        var depts = dt1.Value;
    }
}

public class Results 
{
    public bool Successful {get;set;}
    public List<Department> Value {get;set;}
}

public class Department
{
    public int no { get; set; }
    public string name { get; set; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM