C# 用JSON.NET问题反序列化JSON

C# 用JSON.NET问题反序列化JSON,c#,.net,json,json.net,C#,.net,Json,Json.net,我一直在尝试使用JSON.Net在C#中反序列化JSON流 我有一个JObject“JO1”,当我对其执行JO1.ToString()时,字符串内容如下: { "Successful": true, "Value": [ { "no": "1", "name": "Accounting" }, { "no": "2", "name": "Marketing" }, { "no": "3",

我一直在尝试使用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; }
}
public类main()
{
公共图书馆
{
JObject jo=新的JObject();
jo=检索JSONDATA()的函数;
List dt1=JsonConvert.DeserializeObject(jo.ToString());
}
}
公共课系
{
公共int no{get;set;}
公共字符串名称{get;set;}
}

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

您需要一个类来包装
列表,如下所示:

public class DeserializedDepartments
{
    public bool Successful { get; set; }
    public List<departments> Value { get; set; }
}
DeserializedDepartments dt1 =
    JsonConvert.DeserializeObject<DeserializedDepartments>(jo.ToString());
公共类反序列化的部分
{
公共bool成功{get;set;}
公共列表值{get;set;}
}
所以你可以这样反序列化:

public class DeserializedDepartments
{
    public bool Successful { get; set; }
    public List<departments> Value { get; set; }
}
DeserializedDepartments dt1 =
    JsonConvert.DeserializeObject<DeserializedDepartments>(jo.ToString());
反序列化的部门dt1=
反序列化对象(jo.ToString());

现在您的
列表
位于
dt1的
;或者
dt1.Value

您需要一个类来包装
列表
,如下所示:

public class DeserializedDepartments
{
    public bool Successful { get; set; }
    public List<departments> Value { get; set; }
}
DeserializedDepartments dt1 =
    JsonConvert.DeserializeObject<DeserializedDepartments>(jo.ToString());
公共类反序列化的部分
{
公共bool成功{get;set;}
公共列表值{get;set;}
}
所以你可以这样反序列化:

public class DeserializedDepartments
{
    public bool Successful { get; set; }
    public List<departments> Value { get; set; }
}
DeserializedDepartments dt1 =
    JsonConvert.DeserializeObject<DeserializedDepartments>(jo.ToString());
反序列化的部门dt1=
反序列化对象(jo.ToString());

现在您的
列表
位于
dt1的
;或者
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; }
}
public类main()
{
公共图书馆
{
JObject jo=新的JObject();
jo=检索JSONDATA()的函数;
结果dt1=JsonConvert.DeserializeObject(jo.ToString());
var depts=dt1.值;
}
}
公开课成绩
{
公共bool成功{get;set;}
公共列表值{get;set;}
}
公共课系
{
公共int no{get;set;}
公共字符串名称{get;set;}
}

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

您有一个布尔值为
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; }
}
public类main()
{
公共图书馆
{
JObject jo=新的JObject();
jo=检索JSONDATA()的函数;
结果dt1=JsonConvert.DeserializeObject(jo.ToString());
var depts=dt1.值;
}
}
公开课成绩
{
公共bool成功{get;set;}
公共列表值{get;set;}
}
公共课系
{
公共int no{get;set;}
公共字符串名称{get;set;}
}