我正在尝试使用 json.dumps
将我的 Python 对象序列化为 JSON .如果你序列化一个 dict
使用 json.dumps
它显然会被序列化为 JSON 字典 {..}
;如果你序列化一个 list
或 tuple
,它将是一个 JSON 数组。
我想知道是否有任何方法可以轻松序列化 Python dict
作为 JSON list
, 如果可能的话。如果可能的话,我的意思是如果键从 0 开始并按顺序排列,例如:
{0:'data',1:'data',2:'data}
以上将被序列化为 JSON 为:
'{"0": "data", "1": "data", "2": "data"}'
,但我希望它被序列化为 ['data','data','data']
因为键从 0 开始并按顺序排列。我的理由是因为我有很多从 PHP 序列化的 JSON 数据,其中 PHP 数组有键,如果键按上述顺序排列,PHP 的
json.encode
使用数组,如果它们以任何其他方式键入,它们将被序列化为 JSON 字典。我希望我的 JSON 序列化匹配我的 PHP 和 Python 代码。不幸的是,在我的情况下,更改 PHP 代码不是一个选项。有什么建议?我找到的唯一解决方案是编写自己的函数来遍历并验证每个 python 字典,看看它是否可以先转换为
list
之前 json.dumps
.编辑 :我正在序列化的这个对象可能是
list
或 dict
,同样,它里面可以有额外的 dicts 和列表等等(嵌套)。我想知道是否有任何“简单”的方法可以做到这一点,否则我相信我可以自己编写一个递归解决方案。但是最好使用现有代码来避免更多错误。
最佳答案
您可以将字典转换为元组列表,然后对其进行排序,因为字典项不一定按您希望的顺序出现:
items = sorted(d.items(), key=lambda item: item[0])
values = [item[1] for item in items]
json_dict = json.dumps(values)
关于python - 如果可能,如何将 Python dict 转换为 JSON 作为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15996239/