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

标签 c# json json.net

在我的 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 反序列化为对象,因为 Foo1Foo2 ... 动态变化。


我想知道,当我只有 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/

相关文章:

c# - 空 DataTable 到 Json 并包含列名称

c# - 如何确定在单击按钮期间何时按住控制键

c# - .NET WebClient 先发送无认证请求

c# - GetRoomLists 成功但没有返回数据

c# - 反序列化 iso 8601 日期

c# - 如何使用 Newtonsoft.Json 序列化 C# ref 字段?

c# - 功能未显示在统一按钮上

javascript - 使用Ajax传递Json变量并解码

json - 如何将 ManagedCursorStreamProvider 转换为 mule 4 中的 JSOn 对象

json - 当成员类型更改时如何反序列化 JSON