在Json中查找具有特定键的字段



在我的c#项目中,我使用Json.net库。
我有很长的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…动态改变。


我想知道,当我只有json时,是否有可能获得specific_field的值?

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

            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());
            }

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

你可以使用dynamic:

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"]);
}

相关内容

  • 没有找到相关文章

最新更新