You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中去除JSON值中的转义字符?

解决JSON中转义双引号去除的问题

核心思路

你遇到的问题是JSON中某个字段的值被额外的双引号包裹(转义后表现为\"escapeddata\"),需要精准去除这些首尾的双引号。直接用json.loads只会解析JSON结构,不会处理值的内容;盲目用replace容易破坏正常的JSON转义逻辑,所以要分两步处理:先解析为Python对象,再针对性清理值的首尾引号,最后转回JSON。


方法一:针对已知特定键处理

如果明确知道需要处理的键,直接定位后清理即可:

import json

# 原始JSON字符串
raw_json = '{"key":{"keyinner1":"\"escapeddata\"","keyinner2":"text"}}'

# 解析为Python字典
data = json.loads(raw_json)

# 去除目标字段值的首尾双引号
data["key"]["keyinner1"] = data["key"]["keyinner1"].strip('"')

# 转回JSON字符串
processed_json = json.dumps(data)
print(processed_json)
# 输出结果:{"key": {"keyinner1": "escapeddata", "keyinner2": "text"}}

方法二:递归处理所有可能的字段

如果不确定哪些字段有这类问题,或者需要批量处理嵌套结构中的所有符合条件的字段,可以用递归函数遍历清理:

import json

def clean_surrounding_quotes(value):
    if isinstance(value, str):
        # 仅当字符串首尾都是双引号时才去除
        if value.startswith('"') and value.endswith('"'):
            return value.strip('"')
        return value
    elif isinstance(value, dict):
        return {k: clean_surrounding_quotes(v) for k, v in value.items()}
    elif isinstance(value, list):
        return [clean_surrounding_quotes(item) for item in value]
    else:
        return value

# 示例含多个需要处理的字段的JSON
raw_json = '{"key":{"keyinner1":"\"escapeddata\"","keyinner2":"text","nested":{"sub_key":"\"another_escaped\""}}}'
data = json.loads(raw_json)
processed_data = clean_surrounding_quotes(data)
processed_json = json.dumps(processed_data)
print(processed_json)
# 输出结果:{"key": {"keyinner1": "escapeddata", "keyinner2": "text", "nested": {"sub_key": "another_escaped"}}}

为什么之前的方法无效

  • json.loads的作用是将JSON字符串解析为Python对象,不会自动修改字段值的内容,那些首尾双引号是值的一部分,所以解析后依然存在。
  • 直接用replace处理原始JSON字符串时,比如replace('\\"', '')会把所有转义双引号去掉,可能破坏其他正常的转义逻辑(比如字段值内部的\"),导致JSON结构损坏或处理不精准。

内容的提问来源于stack exchange,提问作者dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 21:56:00