Csharp/C#教程:访问JTOKEN,json.net中的所有项目分享


访问JTOKEN,json.net中的所有项目

我有一个像这样的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" } } } 

如何获取此令牌包含的所有关键项。 例如,从上面的代码我想要“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(); List keys = inner.Properties().Select(p => p.Name).ToList(); foreach (string k in keys) { Console.WriteLine(k); } 

输出:

 ADDRESS_LOCATION LOCATION FLOOR_NUMBER self 

除了接受的答案,我想给出一个答案,说明如何直接迭代Newtonsoft集合。 它使用较少的代码,我猜它更有效,因为它不涉及转换集合。

 using Newtonsoft.Json; using Newtonsoft.Json.Linq; //Parse the data JObject my_obj = JsonConvert.DeserializeObject(your_json); foreach (KeyValuePair sub_obj in (JObject)my_obj["ADDRESS_MAP"]) { Console.WriteLine(sub_obj.Key); } 

我自己开始这样做是因为JsonConvert自动将嵌套对象反序列化为JToken(我认为它是JObject,JValue或JArray)。

我认为解析按照以下原则工作:

如果你知道你收到的json的结构,那么我建议你有一个类结构来反映你在json中收到的内容。

然后你可以称之为……

 AddressMap addressMap = JsonConvert.DeserializeObject(json); 

(其中json是包含所讨论的json的字符串)

如果你不知道你收到的json的格式,那么它会变得有点复杂,你可能需要手动解析它。

查看https://www.hanselman.com/blog/NuGetPackageOfTheWeek4DeserializingJSONWithJsonNET.aspx获取更多信息

上述就是C#学习教程:访问JTOKEN,json.net中的所有项目分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1031146.html

(0)
上一篇 2022年1月13日
下一篇 2022年1月13日

精彩推荐