如何将非结构化格式文本转换为标准JSON格式 附示例及问题说明
非结构化单行JSON文本转标准JSON实现方案
首先注意:你给出的预期输出外层使用{}不符合JSON规范,多个平级对象的集合外层需要使用数组标识[],下述方案输出的内容完全符合RFC 8259标准的JSON格式要求。
核心处理逻辑
- 按换行符拆分原始输入,过滤空行和纯注释行
- 逐行移除末尾的
//格式注释,提取有效对象片段 - 使用安全字面量解析工具处理单双引号混用问题,无需手动替换引号
- 将所有解析后的对象存入数组后直接序列化,自动处理格式与分隔符,不会出现末尾多余逗号的问题
可直接运行的Python实现
import json import ast # 此处替换为你的实际输入文本 input_text = """{'key1':'value1','msg1':"content1"} //line 1 {'key2':'value2','msg2':"content2"} //line 2 {'key3':'value3','msg3':"content3"} //line 3 """ result = [] for line in input_text.splitlines(): line = line.strip() if not line: continue # 移除行内注释 pure_content = line.split("//")[0].strip() # 安全解析Python风格字面量,自动兼容单引号、双引号混用场景 parsed_obj = ast.literal_eval(pure_content) result.append(parsed_obj) # 序列化输出标准JSON,自动处理缩进、逗号,无多余格式问题 output_json = json.dumps(result, indent=2, ensure_ascii=False) print(output_json)
输出结果
[ { "key1": "value1", "msg1": "content1" }, { "key2": "value2", "msg2": "content2" }, { "key3": "value3", "msg3": "content3" } ]
原有方案失败原因说明
- 直接对原始文本调用
json.dumps属于方法误用,该方法的作用是将Python内置对象序列化为JSON字符串,不具备原始文本解析能力 - 手动追加逗号容易出现末尾多余逗号的语法问题,通过先解析为Python数组再序列化的方式,可以完全规避该类格式错误
内容的提问来源于stack exchange,提问作者Mysophobe
相关产品推荐
相关产品推荐

