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

Python读取不同JSON文件转DataFrame遇JSONDecodeError问题求助

解决JSON文件读取失败的问题

报错JSONDecodeError: Expecting property name enclosed in double quotes的核心原因是第二个JSON文件使用了单引号,而标准JSON规范要求属性名和字符串必须用双引号包裹,Python内置的json模块严格遵循该规范,因此无法解析单引号格式的内容。

方案1:修正源JSON文件格式

直接将第二个JSON文件中的所有单引号'替换为双引号",修正后的文件内容如下:

[{
"tulip": {"type": "flower", "color": "red"},
"water": "",
"flower": "sunflower",
"color": "yellow",
"season": "summer",
"blossomTime": "July",
"fragrance": "none",
"petals": 34,
"stemLength": "tall",
"horns": false,
"wateringNeeds": "high"
}]

修改后即可用原代码正常读取。

方案2:通过代码兼容单引号格式

如果无法修改源文件,可以先读取文件内容,将单引号替换为双引号后再解析(注意:如果字符串内容本身包含单引号,这种方法可能出错,需确保文件中没有这类情况):

import json
import pandas as pd

oag_path = f"/path/second_file.json"
with open(oag_path, "r") as json_test:
    # 读取文件内容并替换单引号为双引号
    content = json_test.read().replace("'", '"')
    # 解析处理后的内容
    resp_info = json.loads(content)

# 第二个JSON是直接的列表结构,无需指定record_path
df = pd.json_normalize(resp_info)
print(df)

额外注意:DataFrame转换的差异

第一个JSON有嵌套的data数组,所以用pd.json_normalize(resp_info, record_path=['data']);第二个JSON本身就是顶层数组,直接用pd.json_normalize(resp_info)即可完成转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:47:02