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
相关产品推荐
相关产品推荐

