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

Python解析含布尔值的类JSON字符串时遇JSONDecodeError问题

解决类JSON字符串解析的JSONDecodeError问题

报错原因

你遇到的JSONDecodeError是因为JSON规范要求布尔值必须是小写的true/false,但你的类JSON字符串里是Python风格的大写True/False。仅替换单引号为双引号后,字符串中的True/False不符合JSON语法,导致解析失败。

解决方案

方法1:使用ast.literal_eval解析(推荐)

ast.literal_eval可以安全解析Python字面量格式的字符串,支持单引号和大写布尔值,之后再将布尔值转为字符串即可:

import ast

str_json = "{'name': 'bob', 'id': '11111', 'happy': True, 'sad': False}"
# 解析为Python字典
parsed_dict = ast.literal_eval(str_json)
# 遍历字典,将布尔值转为字符串
result = {
    key: str(value) if isinstance(value, bool) else value
    for key, value in parsed_dict.items()
}
print(result)
# 输出: {'name': 'bob', 'id': '11111', 'happy': 'True', 'sad': 'False'}

方法2:先替换布尔值再解析JSON

先将字符串中的True/False替换为带双引号的字符串,再替换单引号为双引号,最后用json.loads解析:

import json

str_json = "{'name': 'bob', 'id': '11111', 'happy': True, 'sad': False}"
# 替换Python布尔值为JSON兼容的字符串形式
processed_str = str_json.replace('True', '"True"').replace('False', '"False"')
# 替换单引号为双引号
processed_str = processed_str.replace("'", '"')
# 解析JSON
result = json.loads(processed_str)
print(result)
# 输出: {'name': 'bob', 'id': '11111', 'happy': 'True', 'sad': 'False'}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:42:18