如何从 json 字符串中获取对象列表 c# Newtonsoft.json

Mic*_*ell 4 c# json json.net

我正在尝试将 JSON 字符串转换为对象列表,但出现错误

无法将当前 JSON 对象反序列化为 List 类型,因为该类型需要 JSON 数组才能正确反序列化。

我检索了 json,它看起来像这样

{
    "Code":0,
    "Message":"OK",
    "Data":
    {
        "Houses":
        [
            {
                "Id":1,
                "Name":"House 1",
                "Area":"22.00",
                "ShortName":"H1",
                "FarmName":"Farm 1"
            },
            {
                "Id":2,
                "Name":"Farmi1 - House 1",
                "Area":"1000.00",
                "ShortName":"H1",
                "FarmName":"Farm 1"
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我说

List<House> Houses = JsonConvert.DeserializeObject<List<House>>(json); 
Run Code Online (Sandbox Code Playgroud)

der*_*her 6

你得到的 JSON 字符串不是一个列表,而是一个在嵌套级别上有一个列表的对象。您必须反序列化最外层结构,然后获取相应的嵌套属性。

您可以定义一个完整的类来表示您的数据的完整结构,或者,如果您只对房屋列表感兴趣,只需使用 JObjects

var o = JsonConvert.DeserializeObject<JObject>(json);
var h = o.Value<JObject>("Data")
    .Value<JArray>("Houses")
    .ToObject<List<Houses>>();
Run Code Online (Sandbox Code Playgroud)