PHP中无法将转义嵌套JSON转换为标准JSON的解决方案求助
解决嵌套JSON的多余转义与格式标准化问题
为什么
str_replace搞不定
多余斜杠和异常转义大多是多层嵌套序列化的锅——比如先序列化内部对象,再把整个结构二次序列化,导致转义字符叠加。手动替换没法识别嵌套层级,要么误删合法转义(比如字符串里的\),要么漏改深层的转义,自然没法彻底解决。PHP 处理方案
用json_decode递归解析非标准JSON成PHP数组/对象,再重新序列化为标准格式:
// $dirtyJson 是你的问题JSON字符串 $cleanData = json_decode($dirtyJson, true); // 生成标准JSON,可选参数保留Unicode、格式化输出 $standardJson = json_encode($cleanData, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
- Python 处理方案
借助内置json模块的解析与序列化能力:
import json # dirty_json 是你的问题JSON字符串 clean_data = json.loads(dirty_json) # 生成标准JSON,ensure_ascii=False保留原Unicode字符,indent可选用于格式化 standard_json = json.dumps(clean_data, ensure_ascii=False, indent=2)
- 额外提醒
如果JSON本身有语法错误(比如未闭合引号、括号不匹配),得先修复基础语法再用上面的方法;要是转义是特定场景导致的(比如数据库存储的二次转义),可以先针对性处理外层转义,再做解析。
内容的提问来源于stack exchange,提问作者Developer Sudipto
相关产品推荐
相关产品推荐

