我一直在尝试使用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; }
}
有人可以给我指向正确的方向吗?
答案 0 :(得分:5)
你需要一个类来包装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>
位于Value
的{{1}};或dt1
。
答案 1 :(得分:2)
您没有考虑该列表是附加到另一个对象的数组。
你有一个名为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; }
}