Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加载到Google大查询时出现JSON格式错误_Json_Google Bigquery - Fatal编程技术网

加载到Google大查询时出现JSON格式错误

加载到Google大查询时出现JSON格式错误,json,google-bigquery,Json,Google Bigquery,我正在尝试使用内置的数据流模板从PUBSUB加载大查询中的以下数据: { "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 Ri

我正在尝试使用内置的数据流模板从PUBSUB加载大查询中的以下数据:

{
    "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: 字符串意外结束;字符串意外结束;应为键“

我实际上需要加载更大的数据集,如下所示:

 [{
    "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"
}, {
    "current_speed": "25.23",
    "_east": "-87.747456",
    "_last_updt": "2018-07-17 15:50:54.0",
    "_region_id": "2",
    "_north": "42.0190998",
    "_south": "41.960669",
    "region": "Far North West",
    "_west": "-87.84621",
    "_description": "North of Montrose. East River to Cicero"
}
]

但我得到了这个错误:

读取数据时出错,错误消息:无法解析JSON:否 新数组启动时找到的对象。;BeginArray返回false; 解析器在字符串结束之前终止


我做错了什么?

是的,BigQuery只接受新行分隔的JSON,这意味着每行一个完整的JSON对象。在将对象合并到一行之前,BigQuery读取“{”,这是对象的开始,并希望读取一个键,但行结束了,因此您会看到错误消息“expected key”


对于多个JSON对象,只需将它们放在每一行中。不要将它们括在数组中。BigQuery希望每一行以对象“{”开头。如果将“[”作为第一个字符,您将看到第二条错误消息,这意味着BigQuery读取数组,但不读取对象中的对象。

将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"}

(请参阅)

不清楚是谁/什么在发送错误消息,以及您是如何执行的。您能添加更多的实现细节吗?Hi@FelipeHoffa感谢您的回复。我正在尝试使用BQ UI上传JSON,以在实现管道之前对其进行测试。我实际上取得了一些进展。我发现BQ喜欢这种“{”当前速度“:”19.77“,”东部“:”87.654561“,”最后一次updt“:”2018-07-17 15:31:30.0“,”地区id“:”1“,”北部“:”42.026444“,”南“:”41.997946“,”地区“:”罗杰斯公园-西岭“,”西部“:”87.709645“,”地区描述“:”德文郡北部。凯兹至湖岸“)"例如,元素之间没有换行符。但仍然不知道如何处理数组。重新分类:我现在可以插入单个json对象,但不能插入数组。从我的初始对象中,我必须删除所有换行符,并将整个内容压缩到一行。我认为这很奇怪,但它至少可以工作。请针对新问题发布一个新问题-和pl轻松,如果您不使用Pub/Sub或Dataflow直接导入到BigQuery中,请说明。非常有趣。谢谢你。我有一个巨大的对象,作为数组接收。现在我需要以某种方式将其转换为非数组。顺便说一句,BQ不应该也能处理数组吗?我希望这是一个非常常见的场景,里面没有数组支持对象。它将转换为BigQuery中的重复字段。但不接受对象外的数组。严格来说,您不能将JSON对象作为数组接收。JSON对象始终以“{”开头。JSON对象可以具有数组属性:{“string_array”:[“apple”,“banana”]}。供参考:如果要转换大文件,该怎么办?假设文件大小为~7GB,似乎此命令不起作用。有什么建议吗?在mac os上,我没有安装jq(找不到命令),所以我运行了brew install jq