BQ加载含空数组的JSON文件失败,请求技术协助
解决JSON解析错误:No object found when new array is started.
首先我得说,你提供的这段JSON本身是完全合法的——空数组[]并不是导致错误的原因。我用Python的标准json模块测试过,这段字符串能正常解析,所以问题肯定出在其他环节上。
先把你的问题信息整理清楚:
尝试加载的JSON内容:
{"house_account_payable":"0.00","house_account_receivable":"0.00","gift_sales_payable":"0.00","gift_sales_receivable":"0.00","store_credit_sales_payable":"0.00","percentage_row":null,"sales_per_period":[["02:00AM - 02:59AM",{"amount":0,"qty":0}],["03:00AM - 03:59AM",{"amount":0,"qty":0}]],"revenue_centers":[],"tax_breakdowns":[]}遇到的错误:
读取表test2时出错,错误信息为Failed to parse JSON: No object found when new array is started.; BeginArray returned false; Parser terminated before end of string
接下来给你几个排查方向和解决步骤:
1. 检查文件是否被完整读取
错误提示里的Parser terminated before end of string是关键——说明解析器拿到的JSON字符串不完整,大概率是文件读取时只读取了部分内容就停止了。
- 如果是用代码读取文件,比如Python里误用
readline()而非read(),或者Java里的BufferedReader没读到文件末尾,都会导致这种问题。你可以先把文件内容完整复制出来,用下面的测试代码跑一遍,如果能正常解析,就说明是读取逻辑的问题:
import json # 把复制出来的JSON内容放到这里 json_content = '''{"house_account_payable":"0.00","house_account_receivable":"0.00","gift_sales_payable":"0.00","gift_sales_receivable":"0.00","store_credit_sales_payable":"0.00","percentage_row":null,"sales_per_period":[["02:00AM - 02:59AM",{"amount":0,"qty":0}],["03:00AM - 03:59AM",{"amount":0,"qty":0}]],"revenue_centers":[],"tax_breakdowns":[]}''' try: parsed_data = json.loads(json_content) print("✅ JSON解析成功!") print(f"空数组revenue_centers内容:{parsed_data['revenue_centers']}") print(f"空数组tax_breakdowns内容:{parsed_data['tax_breakdowns']}") except Exception as e: print(f"❌ 解析失败:{str(e)}")
2. 检查文件中是否存在隐藏的非法字符
有时候文件里会混入一些不可见的ASCII控制字符(比如换行符、制表符之外的奇怪字符),这些字符肉眼看不到,但会干扰解析器。
- 你可以用专业文本编辑器(比如Notepad++、VS Code)打开文件,开启“显示所有字符”的功能(Notepad++里是「视图」→「显示符号」→「显示所有字符」),仔细检查空数组
[]附近以及文件末尾,看看有没有多余的奇怪字符,比如^@、^M这类控制字符,找到后删除即可。
3. 检查解析工具/库的版本兼容性
如果你是用数据库(比如MySQL、PostgreSQL)的JSON解析功能读取这个文件,某些旧版本的数据库对空数组的处理可能存在bug。
- 尝试升级数据库版本,或者换用另一种解析方式(比如先把文件内容读取到应用程序中解析,再插入数据库)。
总结
你提供的JSON本身没有问题,空数组revenue_centers:[]和tax_breakdowns:[]是完全符合JSON规范的。最可能的原因是文件读取不完整或者文件包含隐藏非法字符,按照上面的步骤排查应该能解决问题。
内容的提问来源于stack exchange,提问作者TheDataGuy
相关产品推荐
相关产品推荐

