c# - 访问 JToken 中的所有项目

标签 c# json json.net

我有一个这样的 json block :

{
    "ADDRESS_MAP":{

        "ADDRESS_LOCATION":{
            "type":"separator",
            "name":"Address",
            "value":"",
            "FieldID":40
        },
        "LOCATION":{
            "type":"locations",
            "name":"Location",
            "keyword":{
                "1":"LOCATION1"
            },
            "value":{
                "1":"United States"
            },
            "FieldID":41
        },
        "FLOOR_NUMBER":{
            "type":"number",
            "name":"Floor Number",
            "value":"0",
            "FieldID":55
        },
        "self":{
            "id":"2",
            "name":"Address Map"
        }
    }
}

如何获取此 token 包含的所有关键项目。例如,从上面的代码中,我想要 "ADRESS_LOCATION"、 "LOCATION"、"FLOOR_NUMBER"和 "self"。

最佳答案

您可以将 JToken 转换为 JObject,然后使用 Properties() 方法获取对象属性的列表。从那里,您可以很容易地获得名称。

类似这样的:

string json =
@"{
    ""ADDRESS_MAP"":{

        ""ADDRESS_LOCATION"":{
            ""type"":""separator"",
            ""name"":""Address"",
            ""value"":"""",
            ""FieldID"":40
        },
        ""LOCATION"":{
            ""type"":""locations"",
            ""name"":""Location"",
            ""keyword"":{
                ""1"":""LOCATION1""
            },
            ""value"":{
                ""1"":""United States""
            },
            ""FieldID"":41
        },
        ""FLOOR_NUMBER"":{
            ""type"":""number"",
            ""name"":""Floor Number"",
            ""value"":""0"",
            ""FieldID"":55
        },
        ""self"":{
            ""id"":""2"",
            ""name"":""Address Map""
        }
    }
}";

JToken outer = JToken.Parse(json);
JObject inner = outer["ADDRESS_MAP"].Value<JObject>();

List<string> keys = inner.Properties().Select(p => p.Name).ToList();

foreach (string k in keys)
{
    Console.WriteLine(k);
}

输出:

ADDRESS_LOCATION
LOCATION
FLOOR_NUMBER
self

关于c# - 访问 JToken 中的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16795045/

相关文章:

c# - Oracle 存储过程、SYS_REFCURSOR 和 NHibernate

json - JavaScript : Array overriding the same values after assinging to JSON object

c# - 如何在 .NET 中将 C# 对象转换为 JSON 字符串?

c# - 当我们在 Xamarin.Forms Android 应用程序中将目标 API 版本更改为 26 时无法读取/写入文件

c# - 如何在不对程序进行重大更改的情况下实现撤消/重做操作

c# - 在不更改 URI 模板反序列化的情况下使用自定义 WCF 正文反序列化

c# - json.net 可枚举

c# - 使用 JSON.NET 反序列化值为字段名称的 JSON

c# - 基于路由参数的 ASP.NET Web API 基于角色的授权

javascript - 如何在javascript中将文字对象转换为用户定义的对象?