Pandas to_json导出JSON转义符、嵌套字段未解析解决方案
问题原因
你调用df['data'].to_json('data.json')得到带大量反斜杠、嵌套结构不识别的结果,核心原因是data列存储的内容是字符串类型的JSON序列化结果,不是pandas可识别的结构化字典/JSON对象。pandas导出时会将普通字符串做转义处理,不会自动解析字符串内部的JSON结构,加上默认导出的orient参数会把行索引作为外层键,就得到了你看到的异常结果。
解决步骤
- 第一步:解析列内的JSON字符串
使用Python标准库json的loads方法,将data列中每一行的JSON字符串转换为Python字典对象,让pandas能识别内部的嵌套结构:
import pandas as pd import json # 基础解析(适用于所有行JSON格式合法的场景) df['data'] = df['data'].apply(json.loads)
如果存在部分行JSON格式不合法的情况,可以加容错逻辑避免流程中断:
def safe_parse_json(json_str): try: return json.loads(json_str) except (json.JSONDecodeError, TypeError): return None # 带容错的解析 df['data'] = df['data'].apply(safe_parse_json) # 可选:过滤掉解析失败的无效行 df = df.dropna(subset=['data'])
- 第二步:调整导出参数生成标准JSON
解析完成后,调整to_json的参数导出格式化的标准JSON文件:
df['data'].to_json( "data.json", orient="records", # 输出为标准JSON数组结构,不会出现行索引作为外层键的问题 force_ascii=False, # 保留特殊字符、非英文字符不转义 indent=2 # 增加缩进格式化,方便阅读和后续解析 )
导出效果
导出后的文件不会存在多余反斜杠,business_card、coordinates、rating这类原字符串内的嵌套字段,会被识别为标准JSON嵌套结构,可直接被各类JSON解析工具正常读取使用。
内容的提问来源于stack exchange,提问作者Zuffido
相关产品推荐
相关产品推荐

