簡體   English   中英

JSON有效,但是代碼返回null

[英]JSON is valid, but result in code returns null

我有這個簡單的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);

您的數據不包含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])正確反序列化。

如果你看到一個空引用,那說明你的地方吞咽異常,這是值得單獨固定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM