JSON 有效,但结果代码返回空

本文关键字:代码 返回 结果 有效 JSON | 更新日期: 2023-09-27 18:07:02

我有这个简单的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; }
}

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

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

JSON 有效,但结果代码返回空

您的数据不包含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 对象(例如 {"name":"value"}(反序列化为类型"System.Collections.Generic.List'1[PersonObject]",因为该类型需要 JSON 数组(例如 [1,2,3](才能正确反序列化。

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