如何根据同级别的另一个值获取 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_numberroute,在这些情况下,我弄错了数据或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 数据值?的主要内容,如果未能解决你的问题,请参考以下文章

SoapUI对于Json数据进行属性值获取与传递的问题

如何从不同级别的 JSON 对象中提取数据

如何将 API 重放的 JSON 中的值放到另一个 API 发布方法的主体中?

如何从json.loads()字典中获取值?

根据部分路径的动态键映射获取json值

如何根据另一个值提取特定值?