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

本文关键字:JSON 反序列化 问题 NET 使用 | 更新日期: 2023-09-27 18:02:28

我一直在尝试使用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; }
}

有人能给我一个指向正确方向的指针吗?

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

您需要一个类来包装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>位于dt1Value中;或CCD_ 5。

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

您有一个布尔值为Successful的对象和一个Departments数组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; }
}