我正在尝试使用内置的数据流模板在PUBSUB中的Big Query中加载以下数据:
reshape
但我一直收到此错误:
“读取数据时出错,错误消息:无法解析JSON: 字符串意外结束;字符串意外结束;预期密钥”
我实际上需要加载更大的数据集,如下所示:
{
"current_speed": "19.09",
"_east": "-87.654561",
"_last_updt": "2018-07-17 15:50:54.0",
"_region_id": "1",
"_north": "42.026444",
"_south": "41.997946",
"region": "Rogers Park - West Ridge",
"_west": "-87.709645",
"_description": "North of Devon. Kedzie to Lake Shore"
}
]
但是我得到了这个错误:
读取数据时出错,错误消息:无法解析JSON:否 启动新数组时找到对象。 BeginArray返回false; 解析器在字符串结尾之前终止
我在这里做什么错了?
答案 0 :(得分:7)
是的,BigQuery仅接受换行符分隔的JSON,这意味着每行一个完整的JSON对象。在将对象合并到一行之前,BigQuery读取“ {”(它是对象的开始),并期望读取一个键,但是该行结束了,因此您会看到错误消息“ expected key”。
对于多个JSON对象,只需将它们放在每一行中。不要将它们包含在数组中。 BigQuery希望每一行都以对象“ {”开头。如果将“ [”作为第一个字符,则会看到第二条错误消息,这意味着BigQuery读取数组,但不在对象内部。
答案 1 :(得分:4)
要将JSON转换为新行分隔的JSON(BigQuery提取的格式),您可以使用jq
:
$ cat a.json
[{
"key01": "value01",
"key02": "value02",
"keyN": "valueN"
},
{
"key01": "value01",
"key02": "value02",
"keyN": "valueN"
},
{
"key01": "value01",
"key02": "value02",
"keyN": "valueN"
}
]
$ cat a.json | jq -c '.[]'
{"key01":"value01","key02":"value02","keyN":"valueN"}
{"key01":"value01","key02":"value02","keyN":"valueN"}
{"key01":"value01","key02":"value02","keyN":"valueN"}