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

如何将文件中带单引号的Unicode JSON字符串转为有效JSON?

嘿,这个问题我太熟了——Python风格的字典字符串(带单引号和u前缀)和标准JSON就差一点点,但直接瞎替换很容易踩坑,给你几个靠谱的解决办法:

方法1:用Python的ast模块(最安全通用)

这是我最推荐的方案,因为它能完美处理各种边界情况,比如字符串值里包含单引号、嵌套结构这些。原理是先把非标准的字符串解析成Python原生字典,再转成标准JSON:

import ast
import json

# 你的原始非标准JSON字符串
invalid_json_str = "{ u'key1':u'abc', u'key2':u\"I'm using single quotes inside\" }"
# 解析为Python字典(ast.literal_eval会安全解析Python字面量,不会执行恶意代码)
python_dict = ast.literal_eval(invalid_json_str)
# 转成标准JSON字符串
valid_json_str = json.dumps(python_dict)

print(valid_json_str)
# 输出:{"key1": "abc", "key2": "I'm using single quotes inside"}

这个方法的优势在于,哪怕你的字符串里有转义字符、嵌套的字典/列表,或者值里包含单引号,都能正确处理,完全不用担心破坏JSON结构。

方法2:简单字符串替换(仅适用于极简场景)

如果你的字符串非常简单,没有嵌套结构,也没有值里包含单引号的情况,那可以直接做字符串替换应急:

invalid_json_str = "{ u'key1':u'abc' }"
# 先去掉Python2的Unicode前缀u,再把所有单引号换成双引号
valid_json_str = invalid_json_str.replace("u'", "\"").replace("'", "\"")

print(valid_json_str)
# 输出:{"key1": "abc"}

⚠️ 注意:这个方法有很大局限性!如果你的值里有单引号(比如u"I'm here"),替换后会变成"I"m here",直接变成无效JSON,所以只适合完全确定没有内部单引号的简单场景。

方法3:第三方库demjson(可选)

如果你能安装第三方库,demjson的解码方法可以直接识别这种非标准JSON:

import demjson

invalid_json_str = "{ u'key1':u'abc' }"
# 直接解析为Python对象
valid_json_obj = demjson.decode(invalid_json_str)
# 转成标准JSON字符串
valid_json_str = demjson.encode(valid_json_obj)

不过需要先安装库:pip install demjson,但一般来说ast模块已经足够解决问题,没必要额外依赖第三方库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:50:17