使用Vertica中的fjsonparser处理JSON中的嵌套数组/列表返回

时间:2015-04-27 21:44:02

标签: python sql json vertica

我遇到了一个问题,我找不到一个好方法来处理它。我将提供一个例子。

假设我正在使用Python请求对Amtrack进行API调用以获取有关其票证的信息。返回将以JSON格式返回,如下所示:

{
   "tickets": [
    {
      "id":               12345,
      "external_id":      "abcdefg",
      "created_at":       "2015-04-27T22:55:29Z",
      "updated_at":       "2015-04-27T10:38:52Z",
      "type":             "commuter",
      "priority":         "high",
      "status":           "open",
      "recipient":        "Amanda",
      "requester_id":     1234567,
      "route_id":      1234567,
      "tags":             ["round-trip", "commuter"],
      "via": {
        "channel": "web"
      },
      "custom_fields": [
        {
          "id":    27642,
          "value": "Commuter Ticket"
        },
        {
          "id":    27648,
          "value": "reoccuring charge"
        }
      ],

    }
}

我正在生成一个包含大约1,000,000张票的JSON文件。

我想把它放到Vertica表中,所以我使用内置的fjsonparser,除了Custom_Fields键外,它很棒。我可以把它放到一个表中,但是这个列充满了几乎无法读取的垃圾,我甚至无法将其放入文本中。

我正试图找到一个好方法来处理这个问题。我需要Custom_Fields中的数据,但由于格式化,将其解析为字符串是不可行的。我考虑在API拉取后写入文件时将所有自定义字段添加到自己的JSON文件中。类似的东西:

CF_list = data['tickets']['custom_fields']

with open(filePath, mode='w') as F:
        json.dump(CF_list, F)

这里的问题是我无法将Custom_Field绑回到他们来自的故障单。我需要一些帮助。

谢谢!

1 个答案:

答案 0 :(得分:3)

flatten_arrays=true添加到FJSONPARSER。这将使嵌套数组变平。