在我的 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
... 动态变化。
我想知道,当我只有 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());
}
在评论中提供,你怎么看?
最佳答案
你可以使用动态:
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"]);
}
关于c# - 在 Json 中查找具有特定键的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17017879/