3

在我的 c# 项目中,我使用Json.net Library
我有很多子字段的长 Json,例如:

{
"count": 10,
"Foo1": [
    {
        "id": "1",
        "name": "Name1"
    },
    {
        "id": "2",
        "name": "Name3"
    },
    {
        "id": "3",
        "name": "Name4"
    }
],
"Foo2": [
    {
        "id": "4",
        "name": "Name3",
        "specific_field": "specific_values1"
    },
    {
        "id": "5",
        "name": "Name3",
        "specific_field": "specific_values2"
    },
    {
        "id": "6",
        "name": "Name3",
        "specific_field": "specific_values3"
    }
],
"Foo3": [
    {
        "id": "7"
    },
    {
        "id": "8"
    },
    {
        "id": "9"
    }
]
}

而且我需要获取所有列表specific_field(id 4-6),但无法将 json 反序列化为对象,因为Foo1, Foo2... 动态更改。


我想知道,这是否可以获取specific_field我只有 json 的值?

我想,我找到了解决方案:

            var list = new List<string>();
            var result = ((JToken)json);
            foreach (var res in result)
            {  
                    list.AddRange(from foo in res.First let ret = foo["specific_field"] where (dynamic) ret != null select foo["specific_field"].ToString());
            }

在评论中,提供,你怎么看?

4

1 回答 1

5

您可以使用动态:

string json = "your JSON string comes here";
dynamic deserializedValue = JsonConvert.DeserializeObject(json);
var values = deserializedValue["Foo2"];
for (int i = 0; i < values.Count; i++)
{
    Console.WriteLine(values[i]["specific_field"]);
}
于 2013-06-10T06:23:47.240 回答