我正在寻找有关如何使用Json.NET反序列化对象的教程,但我找不到与我相似的任何内容。
我有一个像这样的Json:
{
"__ar":1,
"payload":{
"entries":[
{
"uid":100000011980844,
"photo":"",
"type":"user",
"text":"testing",
"path":"testing",
"category":"",
"needs_update":true,
"non_title_tokens":"",
"names":[
"Test"
],
"subtext":"",
"score":0
}
]
}
}
然后,我试着像这样反序列化:
var j = JsonConvert.DeserializeObject<People> (json);
然后:
public class People
{
public string __ar { get; set; }
public Payload payload { get; set; }
}
public class Payload
{
public Person entries { get; set; }
}
public class Person
{
public string uid { get; set; }
public string photo { get; set; }
public string type { get; set; }
public string text { get; set; }
public string path { get; set; }
public string category { get; set; }
public string needs_update { get; set; }
public string non_title_tokens { get; set; }
public string subtext { get; set; }
public string score { get; set; }
public List<string> names { get; set; }
}
但它不起作用,任何人都知道我该怎么做才能修复它?错误消息是:
无法将当前JSON数组(例如[1,2,3])反序列化为类型 'QueryFacebook.Parser + Person'因为类型需要JSON对象 (例如{“name”:“value”})正确反序列化。要修复此错误 将JSON更改为JSON对象(例如{“name”:“value”})或 将反序列化类型更改为数组或实现的类型 集合接口(例如ICollection,IList)就像List那样可以 从JSON数组反序列化。
答案 0 :(得分:3)
只需更改Payload
定义,如下所示
public class Payload
{
public Person[] entries { get; set; }
}