错误 "JSONDecodeError: Extra data" 通常发生在尝试解析JSON数据时,解析器读取了预期之外的额外数据。这可能是因为:
- 文件格式不正确:JSON文件可能不是有效的JSON格式,或者文件中包含了无法解析的字符或结构。
- 文件包含非JSON内容:如果JSON文件中除了有效的JSON数据之外,还包含了其他文本(例如注释或额外的字符),这可能导致解码错误。
- 错误的读取方式:如果JSON文件是一个数组,但被当作对象来解析,或者反之,这可能导致解码错误。
要解决这个问题,您可以采取以下步骤:
检查JSON文件格式
确保JSON文件仅包含有效的JSON数据,并且格式正确。您可以使用在线JSON验证工具来检查文件。
读取JSON文件的正确方式
如果文件包含一个JSON数组(即文件以[
开头),您应该能够使用json.load()
直接读取整个文件:
with open(input_file_path, 'r', encoding='utf-8') as infile: industry_data = json.load(infile)
如果文件包含多个独立的JSON对象(每行一个),需要逐行读取并解析:
with open(input_file_path, 'r', encoding='utf-8') as infile: industry_data = [json.loads(line) for line in infile if line.strip()]
如果还是不太会的话可以尝试更改一下我这里已经改好的代码(不过还是要依据自己实际写)
# 确保输出目录存在 if not os.path.exists(os.path.dirname(output_file_path)): os.makedirs(os.path.dirname(output_file_path)) # 读取原始JSON文件,如果文件中是多行JSON对象 with open(input_file_path, 'r', encoding='utf-8') as infile: company_products = [json.loads(line) for line in infile if line.strip()] # 将读取的JSON数据转换为DataFrame df = pd.DataFrame(company_products) # 写入新的JSON文件,确保数据类型正确 with open(output_file_path, 'w', encoding='utf-8') as outfile: json.dump(df.to_dict(orient='records'), outfile, ensure_ascii=False, indent=4) print(f"JSON数据已更新并保存到 '{output_file_path}'") # 定义文件路径用于后续操作 file_path = output_file_path # 更新为新文件路径