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
相关产品推荐
相关产品推荐

