用Json.NET反序列化

时间:2013-01-17 17:41:02

标签: c# json.net

我正在寻找有关如何使用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数组反序列化。

1 个答案:

答案 0 :(得分:3)

只需更改Payload定义,如下所示

public class Payload
{
    public Person[] entries { get; set; }
}