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

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)自然能解析成字典。

解决方案

  1. 先确认payload_d的实际类型:
    print(type(payload_d))
    
  2. 如果payload_d是字符串,直接对它做JSON反序列化即可得到字典:
    # 替换原有的a = json.dumps(...)和b = json.loads(a)
    b = json.loads(payload_d)
    print(type(b))  # 此时类型为dict
    
  3. 若不确定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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 20:42:09