You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数组JSON转换为BigQuery要求的换行分隔JSON格式

实现方法

你当前输出不符合要求的核心原因是:把所有解析完成的字典对象存入data列表后,一次性对整个列表做json.dumps序列化,得到的是带方括号、逗号分隔的标准JSON数组,而BigQuery要求的换行分隔JSON(NDJSON)需要每个JSON对象单独序列化后逐行存放,不需要外层数组包裹、也不需要对象间的逗号。

写法1(推荐,内存占用更低)

不需要提前维护data列表存储所有对象,每解析完一行生成单个字典后,立刻单独序列化输出即可,尤其适合数据量较大的场景:

import json
cols = ["id","email","surname"]

for line in response.text.split("\n")[1:3]:
    obj = {}
    for name, value in zip(cols, line.split(";")):
        obj[name] = value
    # 单对象序列化后直接打印,默认自带换行
    print(json.dumps(obj))

写法2(兼容原有攒列表的逻辑)

如果你后续还需要对data列表做其他处理,不想改动前面的解析逻辑,只需要修改最后输出的部分,遍历列表逐个序列化对象即可:

import json
cols = ["id","email","surname"]
data = []

for line in response.text.split("\n")[1:3]:
    obj={}
    for name,value in zip(cols,line.split(";")):
        obj[name] = value
    data.append(obj)

# 替换原来的print(json.dumps(data))逻辑
for record in data:
    print(json.dumps(record))

写入文件的注意点

如果需要把结果直接存为本地文件供BigQuery导入,不要用print,直接按行写入文件即可:

with open("bq_import_data.ndjson", "w", encoding="utf-8") as f:
    for record in data:
        f.write(json.dumps(record) + "\n")

注意:生成的文件不要加外层方括号、不要在对象之间加逗号,确保每行是一个完整合法的JSON对象,就能直接满足BigQuery的导入要求。

内容的提问来源于stack exchange,提问作者Arnaud Stephan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:15:33