我有这个简单的JSON
{
"persons": [{
"firstname": "Brad",
"lastname": "Pitt"
}, {
"firstname": "George",
"lastname": "Clooney"
}, {
"firstname": "Matt",
"lastname": "Damon"
}]
}
Run Code Online (Sandbox Code Playgroud)
这是我在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; }
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因它总是返回null ...我真的看不出这有JsonConvert.DeserializeObject什么问题...因为它没有错,因为它适用于其他JSON字符串.
_PersonsList = JsonConvert.DeserializeObject<List<PersonObject>>(data);
Run Code Online (Sandbox Code Playgroud)
您的数据不包含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
Run Code Online (Sandbox Code Playgroud)
使用当前代码,您不应该获得空引用 - 您应该获得异常,如下所示:
未处理的异常:Newtonsoft.Json.JsonSerializationException:不能反序列化当前JSON对象(例如{"名称":"值"})成型"System.Collections.Generic.List`1 [PersonObject]",因为类型需要JSON数组(例如[1,2,3])正确反序列化.
如果你正在看到一个空引用,那说明你的地方吞咽异常,这是值得单独固定.