JSON有效,但代码返回null

时间:2016-09-15 09:53:10

标签: c# json json.net

我有这个简单的JSON

{
    "persons": [{
        "firstname": "Brad",
        "lastname": "Pitt"
    }, {
        "firstname": "George",
        "lastname": "Clooney"
    }, {
        "firstname": "Matt",
        "lastname": "Damon"
    }]
}

这是我在C#中的课程:

public class PersonObject
{
    [JsonProperty(PropertyName = "persons")]
    public List<Person> Persons { get; set; }
}

public class Person
{
    [JsonProperty(PropertyName = "firstname")]
    public string Firstname { get; set; }

    [JsonProperty(PropertyName = "lastname")]
    public string Lastname { get; set; }
}

由于某种原因它总是返回null ...我真的看不出这有什么问题... JsonConvert.DeserializeObject没有什么不对,因为它适用于其他JSON字符串。

_PersonsList = JsonConvert.DeserializeObject<List<PersonObject>>(data);

1 个答案:

答案 0 :(得分:7)

您的数据不包含List<PersonObject> - 它包含 PersonObject,其中包含List<Person>。所以这很好用:

var json = File.ReadAllText("test.json");
var obj = JsonConvert.DeserializeObject<PersonObject>(json);
Console.WriteLine(obj.Persons[0].Firstname); // Prints Brad

使用您当前的代码,您不应该获得空引用 - 您应该得到一个例外,如下所示:

  

未处理的异常:Newtonsoft.Json.JsonSerializationException:无法将当前的JSON对象(例如{&#34; name&#34;:&#34; value&#34;})反序列化为类型&#39; System.Collections。 Generic.List`1 [PersonObject]&#39;因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化。

如果您 看到空引用,则表示您在某处吞咽异常,这值得单独修复。