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

Python读取JSON转Excel遇ValueError错误,求解决方案

解决JSON转Excel时的"All arrays must be of the same length"错误

错误原因

这个错误的核心是JSON数据中不同字段对应的列表/数组长度不一致。Pandas的read_json()默认要求所有列(对应JSON的键)的行数完全匹配,当某几个键的值长度不统一时,就会抛出该异常。另外你的路径写法存在隐患:Windows路径里的反斜杠\会被Python识别为转义字符,比如\U会触发Unicode转义错误,建议改用原始字符串(加r前缀)规避。

解决方案

步骤1:先确认JSON结构

先加载并查看JSON的具体格式,明确哪些字段长度不匹配:

import json

# 用原始字符串避免转义问题
with open(r'C:\Users\rajat.kapoor\Downloads\comprehensive JSON.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

print(data)

步骤2:用pd.json_normalize()处理复杂/长度不一致的JSON

如果你的JSON是嵌套结构或存在长度不一的字段,json_normalize()比read_json()更灵活,它能展平嵌套结构,同时自动用NaN填充缺失值:

import pandas as pd
import json

# 加载JSON数据
with open(r'C:\Users\rajat.kapoor\Downloads\comprehensive JSON.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# 归一化JSON数据
df = pd.json_normalize(data)

# 导出到Excel
df.to_excel(r'C:\Users\rajat.kapoor\Desktop\JsonOutput.xlsx', index=False)

步骤3:手动对齐列表长度(可选)

如果JSON是简单键值对,且值为长度不同的列表,可以手动填充缺失值让所有列表长度统一:

import pandas as pd
import json

with open(r'C:\Users\rajat.kapoor\Downloads\comprehensive JSON.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# 找到最长的列表长度
max_length = max(len(v) for v in data.values())

# 填充所有列表到相同长度,缺失值用NaN
aligned_data = {k: v + [pd.NA]*(max_length - len(v)) for k, v in data.items()}

# 转成DataFrame并导出
df = pd.DataFrame(aligned_data)
df.to_excel(r'C:\Users\rajat.kapoor\Desktop\JsonOutput.xlsx', index=False)

额外注意点

  • 路径必须用原始字符串(加r)或者把反斜杠改成双反斜杠\\,否则会出现转义错误。
  • 如果JSON文件编码不是UTF-8,要在open()里指定对应的encoding参数,比如encoding='gbk'。

内容的提问来源于stack exchange,提问作者Sourabh Samyal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:45:32