json.loads() 返回一个字符串

新手上路,请多包涵

为什么 json.loads() 返回一个字符串?这是我的代码:

 import json

d = """{
    "reference": "123432",
    "business_date": "2019-06-18",
    "final_price": 40,
    "products": [
        {
            "quantity": 4,
            "original_price": 10,
            "final_price": 40,
        }
    ]
}"""

j = json.loads(json.dumps(d))
print(type(j))

输出:

 <class 'str'>

它不应该返回一个 json 对象吗?这里需要什么改变?

原文由 Zid 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

两点:

  1. 您的 products 键中有错字: "final_price": 40, 应该是 "final_price": 40 (没有逗号)
  2. j 应该是 json.loads(d)

输出

字典

编辑

这篇文章解释了为什么你不能在 json 对象中 使用尾随逗号的原因你可以在 JSON 对象中使用尾随逗号吗?

不幸的是,JSON 规范不允许尾随逗号。有一些浏览器允许它,但通常您需要担心所有浏览器。

原文由 Sebastien D 发布,翻译遵循 CC BY-SA 4.0 许可协议

ast.literal_eval: 安全地评估表达式节点或包含 Python 文字或容器显示的字符串。提供的字符串或节点只能由以下 Python 文字结构组成:字符串、字节、数字、元组、列表、字典、集合、布尔值、无、字节和集合。 更多细节

import ast

d = """{
    "reference": "123432",
    "business_date": "2019-06-18",
    "final_price": 40,
    "products": [
        {
            "quantity": 4,
            "original_price": 10,
            "final_price": 40,
        }
    ]
}"""

data = ast.literal_eval(d)

print(data)
print(type(data))

开/关:

 {'reference': '123432', 'business_date': '2019-06-18', 'final_price': 40, 'products': [{'quantity': 4, 'original_price': 10, 'final_price': 40}]}
<class 'dict'>

原文由 bharatk 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题