Python导出JSON出现转义引号 如何正确格式化输出JSON文件
问题根源
你调用模型自带的.json()方法已经完成了一次JSON序列化,得到的是已经转义过的JSON字符串,后续再用json.dump()对这个字符串做二次序列化,就会把字符串内部的引号再次转义,才会出现大量\"这类无效转义字符。
解决方案
你可以根据需求任选以下一种方案,都可以解决转义问题,还可以直接输出格式化后的可读JSON结构,适配你深层嵌套模型的查看需求:
方案1:直接写入模型返回的JSON字符串
如果模型自带的.json()方法已经满足序列化需求,直接写入字符串即可,不需要再调用json模块的序列化方法:
derived_game = GameUnderstanding().derive_gamestates(game=game) derived_json_str = derived_game.json() with open('derived_game.json', 'w', encoding='utf-8') as outfile: outfile.write(derived_json_str)
方案2:直接序列化原始数据,自定义格式化规则
如果需要调整输出格式(比如缩进、保留中文、按键排序),可以先取模型的原始字典结构,再做一次序列化,适配你的数据查看需求:
derived_game = GameUnderstanding().derive_gamestates(game=game) # 此处如果是pydantic类模型调用.dict()方法,其他模型按需调整为获取原始数据的对应方法 game_raw_data = derived_game.dict() with open('derived_game.json', 'w', encoding='utf-8') as outfile: json.dump( game_raw_data, outfile, indent=2, # 按2空格缩进分层,深层嵌套结构一目了然 ensure_ascii=False, # 保留中文等非ASCII字符不转义 sort_keys=True # 可选:按字段名排序输出,方便对比不同版本的数据差异 )
内容的提问来源于stack exchange,提问作者Hofbr
相关产品推荐
相关产品推荐

