如何根据同级别的另一个值获取 JSON 数据值?
Posted
技术标签:
【中文标题】如何根据同级别的另一个值获取 JSON 数据值?【英文标题】:How to get JSON data value based on another value on the same level? 【发布时间】:2015-07-07 14:04:09 【问题描述】:我正在尝试解析调用 API 时提供的 Google Places JSON。我的问题是我需要单独获取地址数据。
例如:
"html_attributions" : [],
"result" :
"address_components" : [
"long_name" : "48",
"short_name" : "48",
"types" : [ "street_number" ]
,
"long_name" : "Pirrama Road",
"short_name" : "Pirrama Road",
"types" : [ "route" ]
,
"long_name" : "Pyrmont",
"short_name" : "Pyrmont",
"types" : [ "locality", "political" ]
,
"long_name" : "NSW",
"short_name" : "NSW",
"types" : [ "administrative_area_level_1", "political" ]
,
"long_name" : "AU",
"short_name" : "AU",
"types" : [ "country", "political" ]
,
"long_name" : "2009",
"short_name" : "2009",
"types" : [ "postal_code" ]
], ......
我需要得到postal_code
,所以我可以使用Jason Path $.result.address_components[5].long_name
,但有时Json 没有street_number
或route
,在这些情况下,我弄错了数据或null
。
我需要的是一种方法来获取long_name
,其中级别的类型是postal_code
,使用Xpath
(因为我使用Pentaho 来解析它,这就是它的工作方式)。
提前致谢。
【问题讨论】:
XPath 用于 XML 文档,而不是 JSON。您是否以某种方式将此 JSON 转换为 XML? @MikeBrant 我没有转换。我正在使用类似 Xpath 的 Json 【参考方案1】:您可能需要几个 JSON 输入步骤,一个是获取各个地址组件(以及其中的类型),另一个是获取 long_name:
过滤行步骤将按类型选择正确的行,然后最后一个 JSON 输入将从您想要的字段中获取您想要的字段。这是您的示例输入的要点:
https://gist.github.com/mattyb149/0ceea5d7e33ae86782e0
如果您有任何疑问、问题等,请告诉我。干杯!
【讨论】:
感谢您的回复。我不确定我是否理解你的所作所为。你能发布这些步骤属性的图片吗? 我问你是因为我需要获取所有地址。对于那些有邮政编码的人,我需要把它放在最后一个单独的 excel 列中。对于那些没有的,则为空。认为这不会是一个问题,但我不明白你做了什么。认为这可能有效,只需要一些澄清。 :) 如果你去gist,下载它,然后在PDI中打开它,你可以看到所有步骤对话框的设置以上是关于如何根据同级别的另一个值获取 JSON 数据值?的主要内容,如果未能解决你的问题,请参考以下文章