从 Podio 中的 Google People JSON 对象中提取地址

Posted

技术标签:

【中文标题】从 Podio 中的 Google People JSON 对象中提取地址【英文标题】:Extract address from Google People JSON object in Podio 【发布时间】:2022-01-22 22:55:59 【问题描述】:

我正在尝试从 Podio Workflow Automation 中的 Google People API 调用中提取地址数据。我正在成功提取除地址之外的所有其他数据。

情况 - 如果我只请求姓名,我可以提取每个单独的姓名字段,但如果我将地址添加到请求中,我将无法再提取姓名字段或地址字段。如果我只请求地址,我无法提取地址字段。

由于某种原因,包括地址数据似乎破坏了 JSON..

仅请求姓名数据,我得到:


  "resourceName": "people/c2138163302931177819",
  "etag": "%EgUBAi43PRoEAQIFByIMT1hSSUpZWTVuMFk9",
  "names": [
    
      "metadata": 
        "primary": true,
        "source": 
          "type": "CONTACT",
          "id": "1dac48320efd215b"
        
      ,
      "displayName": "xx xxxxx xxxxxx",
      "familyName": "xxxxxx",
      "givenName": "xxxxx",
      "honorificPrefix": "xx",
      "displayNameLastFirst": "xxxxxx, xx xxxxx",
      "unstructuredName": "xx xxxxx xxxxxx"
    
  ]

请求姓名和地址数据,我得到:


  "resourceName": "people/c2138163302931177819",
  "etag": "%EggBAgwQLjc9QBoEAQIFByIMT1hSSUpZWTVuMFk9",
  "names": [
    
      "metadata": 
        "primary": true,
        "source": 
          "type": "CONTACT",
          "id": "1dac48320efd215b"
        
      ,
      "displayName": "xx xxxxx xxxxxx",
      "familyName": "xxxxxx",
      "givenName": "xxxxx",
      "honorificPrefix": "xx",
      "displayNameLastFirst": "xxxxxx, xx xxxxxx",
      "unstructuredName": "xx xxxxx xxxxxx"
    
  ],
  "addresses": [
    
      "metadata": 
        "primary": true,
        "source": 
          "type": "CONTACT",
          "id": "1dac48320efd215b"
        
      ,
      "formattedValue": "xxxxxxx\nSouthampton, England xxxxxxx\nUnited Kingdom",
      "streetAddress": "xxxxxxx",
      "city": "Southampton",
      "region": "England",
      "postalCode": "xxxxxxx",
      "country": "United Kingdom",
      "countryCode": "GB"
    
  ]

对我来说,这在结构上看起来没有什么不同,但是当我将其更改为此处的代码时,它无法正确识别后一个..

在 Podio 中,我对响应进行 base64 编码,然后作为示例提取我使用的名字:

json_decode(base64_decode([(Variable) google_array]))->'names'[0]->'givenName'

对于我正在使用的城市

json_decode(base64_decode([(Variable) google_array]))->'addresses'[0]->'city'

如果我只请求姓名详细信息,但如果它还包含地址详细信息,则提取名称可以正常工作。似乎只有地址会造成此问题。我无法提取任何地址详细信息。

【问题讨论】:

看这里的代码我想知道是不是出现在地址 formattedValue 字段中的 /n 【参考方案1】:

听起来您的 json_decode(或编码)不适用于那些“\n”换行符。

请参阅有关 php 7 中 json_decode 的讨论:New lines and tabs in json_decode() (PHP 7)

【讨论】:

感谢 marmor - 我会在解码前尝试删除 \n。我实际上根本不需要 formattedValue 信息,所以我想知道是否可以删除该字段.. 在 base64 编码之前删除 \n 是一种享受 - 感谢 Marmor【参考方案2】:

使用 str_replace 在 base64 编码之前从 JSON 响应中删除“\n”

【讨论】:

以上是关于从 Podio 中的 Google People JSON 对象中提取地址的主要内容,如果未能解决你的问题,请参考以下文章

从 Google People API 搜索中获取姓名和电话号码

使用 google people API 访问 google 连接

有啥方法可以从 google contact api v3 检索 account_id 以向 google people api 发出获取请求?

Gravity Forms Podio 集成错误

联系表格提交到 Podio [关闭]

当我请求 google people api 时没有最后修改的时间戳