我遇到了一个问题,我找不到一个好方法来处理它。我将提供一个例子。
假设我正在使用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绑回到他们来自的故障单。我需要一些帮助。
谢谢!
答案 0 :(得分:3)
将flatten_arrays=true
添加到FJSONPARSER
。这将使嵌套数组变平。