如何根据同一级别的其他值获取JSON数据值?

时间:2015-07-07 14:04:09

标签: json google-places-api pentaho kettle jsonpath

我正在尝试解析在调用其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来解析它,这就是它的工作方式)。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可能需要几个JSON输入步骤,一个用于获取单个地址组件(以及内部类型),另一个用于获取long_name:

enter image description here

Filter Rows步骤将按类型选择正确的一个,然后最后一个JSON Input将从您想要的那个中获取字段。以下是您输入示例的要点:

https://gist.github.com/mattyb149/0ceea5d7e33ae86782e0

如果您有任何疑问,问题等,请告诉我。干杯!