【发布时间】:2018-07-06 19:05:37
【问题描述】:
根据 JSON 规范 https://www.rfc-editor.org/rfc/rfc8259 对象的键应该是唯一的
- 对象
对象结构表示为一对花括号
围绕零个或多个名称/值对(或成员)。名字就是一个
细绳。每个名称后面都有一个冒号,用于分隔名称
从价值。单个逗号将值与以下值分开
姓名。 对象中的名称应该是唯一的。
但是可以使用两个相同的键创建 json 对象
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
>>> import json
>>> json.dumps({1: 'value1', "1": 'value2'})
'{"1": "value1", "1": "value2"}'
这是一个错误吗?
【问题讨论】:
-
不,你有责任传递一个字典,其中的键将呈现不同的输出。
-
您给定的数据具有唯一键。一个是整数
1,另一个是包含"1"的长度为1的字符串。 btwjson在对象中只能有字符串键。 -
@quamrana,是的,我的 dict 有不同的键,我知道,我说的是生成的 json 对象
-
因此,如果您要创建一个与
json兼容的dict,那么json.dumps()将产生有效的json。如果您将该输出字符串传递给json.loads(),会发生什么? -
请注意,
json.load提供了一个object_pairs_hook关键字参数,您可以使用该参数正确加载具有重复键的对象而不会丢失数据。