使用jsoncpp实现字符串转JSON时出现多余字符的问题排查
问题解决:JSON导入时字符串重复转义
问题根源
你遇到的是双重序列化导致的转义冗余:编辑后的TXT字符串被当作JSON格式字符串再次序列化,原本的单个反斜杠被转义成两个,同时多套了一层引号。
修正方案
核心原则
- 读取TXT时直接获取原始字符串,不额外处理转义
- 写入JSON时,直接将字符串赋值给
dialogue字段,不要提前用JSON序列化工具处理该字符串
修正后的代码示例(Python)
import json # 1. 读取编辑后的TXT内容,直接获取原始字符串 with open("edited_dialogues.txt", "r", encoding="utf-8") as txt_f: new_dialogue = txt_f.read().strip() # 2. 加载原始JSON数据 with open("original.json", "r", encoding="utf-8") as json_f: json_data = json.load(json_f) # 3. 直接赋值给dialogue字段,无需额外序列化 for item in json_data: if "dialogue" in item: item["dialogue"] = new_dialogue # 4. 写入JSON,由json.dump自动处理正确转义 with open("output.json", "w", encoding="utf-8") as out_f: json.dump(json_data, out_f, ensure_ascii=False, indent=2)
关键说明
- 避免使用
json.dumps()处理单个dialogue字符串:该方法会把普通字符串转成JSON格式的字符串(比如把\{Hello there变成"\{Hello there"),再被json.dump()序列化一次就会变成""\\{Hello there"" - 读取TXT时不要手动解析转义字符:Python的
read()方法会直接读取文件中的原始字符,保留编辑后的字符串格式
内容的提问来源于stack exchange,提问作者hoboayoyo
相关产品推荐
相关产品推荐

