c# – 从特定位置的JSON格式中取出记录
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 从特定位置的JSON格式中取出记录,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2241字,纯文字阅读大概需要4分钟。
内容图文
我正在使用谷歌的地理编码API来获取基于我传递的邮政编码的数据,如下所示:
http://maps.googleapis.com/maps/api/geocode/json?address=97001&sensor=true
我得到这样的结果:
{
"results" : [
{
"address_components" : [
{
"long_name" : "97001",
"short_name" : "97001",
"types" : [ "postal_code" ]
},
{
"long_name" : "Antelope",
"short_name" : "Antelope",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Oregon",
"short_name" : "OR",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Antelope, OR 97001, USA",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 45.0835979,
"lng" : -120.476616
},
"southwest" : {
"lat" : 44.801399,
"lng" : -120.91835
}
},
"location" : {
"lat" : 44.9552895,
"lng" : -120.6265837
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 45.0835979,
"lng" : -120.476616
},
"southwest" : {
"lat" : 44.801399,
"lng" : -120.91835
}
}
},
"place_id" : "ChIJhZMDGc0ovFQRBev1yy22nAk",
"types" : [ "postal_code" ]
}
],
"status" : "OK"
}
现在这很好,但我只想从“addres_component”中选择记录,其中类型等于:
"types" : [ "administrative_area_level_1", "political" ]
我可以做这样的事来获取值:
JObject.Parse(myJson)["keyhere"].ToString();
但是,我如何实际检查值short_name和long_name的类型是否是我上面提到的类型?
如何使用JObject类实现此目的?
解决方法:
Newtonsoft JSON中有一个名为SelectToken的方法,它允许您使用JSONPath(类似于XPath)来查找JSON的特定部分.
你可以在这里阅读更多:http://www.newtonsoft.com/json/help/html/SelectToken.htm
对于您的具体情况,您可以这样做:
JObject o = JObject.Parse(json);
JToken token = o.SelectToken("$..address_components[?(@.types.indexOf('administrative_area_level_1') != -1), ?(.types.indexOf('political') != -1)]");
这没有经过测试,你可能不得不自己动手做.文档可在Newtonsoft JSON的链接中找到.
上述JSONPath的评估结果如下:
'0' ...
'long_name' => "Oregon"
'short_name' => "OR"
'types' ...
'0' => "administrative_area_level_1"
'1' => "political"
一些说明:
在JSONPath中的?()测试中,您可以使用JavaScript.详情请见:https://stackoverflow.com/a/30031333/1862405
联合角色就像一个OR. JSONPath中还没有逻辑运算符.在这里阅读更多:https://stackoverflow.com/a/23897735/1862405
要测试JSONPath,可以使用在线测试程序.我用的是http://jsonpath.com/
内容总结
以上是互联网集市为您收集整理的c# – 从特定位置的JSON格式中取出记录全部内容,希望文章能够帮你解决c# – 从特定位置的JSON格式中取出记录所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。