Python中json.loads无法将变量b转为字典,同内容变量c却成功,求助
问题排查与解决
问题根源
你的payload_d本身不是字典(dict),而是一个已经被JSON序列化过的字符串。从输出能明确看出:
print(payload_d)输出{"temp":"2"},看起来像字典,但实际是字符串的打印结果;- 执行
a = json.dumps(payload_d)后,print(a)输出"{\"temp\":\"2\"}"——这是对字符串做JSON序列化的典型结果:给字符串套外层引号,同时转义内部的引号。
这种情况下,json.loads(a)解析出来的就是原始的payload_d(即那个字符串),所以类型是str;而你手动定义的c是标准的JSON格式字符串,json.loads(c)自然能解析成字典。
解决方案
- 先确认
payload_d的实际类型:print(type(payload_d)) - 如果
payload_d是字符串,直接对它做JSON反序列化即可得到字典:# 替换原有的a = json.dumps(...)和b = json.loads(a) b = json.loads(payload_d) print(type(b)) # 此时类型为dict - 若不确定
payload_d的类型,可加判断兼容处理:import json # 兼容不同类型的payload_d if isinstance(payload_d, str): b = json.loads(payload_d) elif isinstance(payload_d, dict): b = payload_d # 本身就是字典,无需额外处理 else: # 其他类型根据实际场景处理 b = None print(type(b))
内容的提问来源于stack exchange,提问作者Omm
相关产品推荐
相关产品推荐

