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

Python中字符串转JSON报错:含None值时json.loads加载失败

解决JSON字符串含None值时json.loads()报错的问题

嘿,这个问题我太熟了!你用json.loads()处理包含None的JSON字符串时报错,核心原因是JSON官方规范里根本没有None这个值——JSON里表示空值的是null,而Python里的None是Python专属的,JSON解析器完全不认它。

先看看问题重现

比如你提到的报错场景,代码大概是这样:

import json

# 包含None的非标准JSON字符串
data = """{"values": [["a1", None], ["a2", "https://aaaa.com"]]}"""
json.loads(data)  # 这里会直接触发JSONDecodeError

两种靠谱的解决办法

1. 手动替换字符串里的None为null

如果你的字符串是从别处获取的非标准JSON,最直接的方式就是提前把文本里的None替换成JSON认可的null:

import json

data = """{"values": [["a1", None], ["a2", "https://aaaa.com"]]}"""
# 替换非标准的None为JSON标准的null
fixed_data = data.replace("None", "null")
# 现在就能正常解析了
result = json.loads(fixed_data)
print(result)

⚠️ 小提醒:如果你的字符串里有带引号的"None"(比如作为字符串值的"None"),替换的时候要小心别误改,不过一般这种场景里的None都是不带引号的空值标识,直接替换没问题。

2. 从Python对象生成标准JSON字符串(更规范)

如果这个字符串是你自己生成的,别手动拼接!直接用json.dumps()把Python对象转成标准JSON字符串,它会自动把Python的None转换成JSON的null:

import json

# 先构造Python字典
data_dict = {"values": [["a1", None], ["a2", "https://aaaa.com"]]}
# 用json.dumps生成标准JSON字符串
standard_json_str = json.dumps(data_dict)
# 再解析自然毫无问题
result = json.loads(standard_json_str)
print(result)

这种方式从根源上避免了格式错误,是处理Python和JSON交互的标准做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:14:17