使用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; }
}
有人能给我一个指向正确方向的指针吗?
您需要一个类来包装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>
位于dt1
的Value
中;或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; }
}