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

使用Python BigQuery API上传嵌套JSON遇模糊400错误求助

解决BigQuery加载嵌套重复RECORD时的JSON格式错误

你的400错误根源在于JSON格式不符合BigQuery NEWLINE_DELIMITED_JSON的要求,我帮你梳理了具体问题和修正方案:

原JSON存在的问题

  1. 引号错误:JSON规范强制要求用双引号包裹所有键名和字符串值,你用了单引号,这会被BigQuery判定为无效格式
  2. 结构错误:NEWLINE_DELIMITED_JSON要求每行是一个独立的JSON对象,不需要用外层数组包裹
  3. 语法不完整:你的JSON末尾缺少闭合的]和},属于语法错误

正确的JSON示例

把testjson.json的内容改成下面这样,就能正常加载了:

{"full_name":"test","age":2,"address":[{"test":"hi","second":"hi2"}]}

如果需要批量上传多条数据,每行一个JSON对象即可:

{"full_name":"test1","age":30,"address":[{"test":"home","second":"street1"},{"test":"work","second":"street2"}]}
{"full_name":"test2","age":25,"address":[{"test":"temp","second":"avenue1"}]}

快速验证JSON合法性的小技巧

你可以用Python自带的json模块提前校验JSON格式,避免上传时踩坑:

import json

# 验证单行JSON
with open('testjson.json', 'r') as f:
    try:
        json.load(f)
        print("JSON格式合法")
    except json.JSONDecodeError as e:
        print(f"JSON格式错误: {e}")

# 验证多行NEWLINE_DELIMITED_JSON
with open('testjson.json', 'r') as f:
    for line_num, line in enumerate(f, 1):
        try:
            json.loads(line.strip())
        except json.JSONDecodeError as e:
            print(f"第{line_num}行JSON错误: {e}")

补充说明

你的表结构定义是完全正确的:address作为重复的RECORD类型,对应JSON中的数组对象,每个数组元素包含test和second字段,和修正后的JSON结构完美匹配。

内容的提问来源于stack exchange,提问作者Fabian Bosler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:41:26