首页 > 后端开发 > Python教程 > 使用'json.dumps”转换 Python 字典时,如何控制 JSON 对象中键的顺序?

使用'json.dumps”转换 Python 字典时,如何控制 JSON 对象中键的顺序?

Barbara Streisand
发布: 2024-10-29 21:17:30
原创
965 人浏览过

How can you control the order of keys in JSON objects when converting Python dictionaries using `json.dumps`?

使用“json.dumps”对 JSON 对象中的项目进行重新排序

使用“json.dumps”函数转换 Python 时会出现 JSON 对象中无序键的问题字典转换为 JSON 格式,导致意外的排序。出现这种情况是因为 Python 字典和 JSON 对象都缺乏固有的排序。

为了解决这个问题,可以在“json.dumps”中使用“sort_keys”参数来按字母升序对键进行排序。这是一个示例:

<code class="python">import json

countries = [
    {"id": 1, "name": "Mauritius", "timezone": 4},
    {"id": 2, "name": "France", "timezone": 2},
    {"id": 3, "name": "England", "timezone": 1},
    {"id": 4, "name": "USA", "timezone": -4}
]

print(json.dumps(countries, sort_keys=True))</code>
登录后复制

这会产生带有排序键的所需输出:

<code class="json">[
  {"id": 1, "name": "Mauritius", "timezone": 4},
  {"id": 2, "name": "France", "timezone": 2},
  {"id": 3, "name": "England", "timezone": 1},
  {"id": 4, "name": "USA", "timezone": -4}
]</code>
登录后复制

另一个选项涉及使用“collections.OrderedDict”类,它维护键的顺序 -值对。下面是一个示例:

<code class="python">from collections import OrderedDict

countries = OrderedDict([
    ("id", 1),
    ("name", "Mauritius"),
    ("timezone", 4)
])

print(json.dumps(countries))</code>
登录后复制

这也会产生有序的 JSON 输出:

<code class="json">{"id": 1, "name": "Mauritius", "timezone": 4}</code>
登录后复制

从 Python 3.6 开始,默认情况下会保留关键字参数顺序,从而提供了一种更简化的方法实现所需的顺序:

<code class="python">countries = {
    "id": 1,
    "name": "Mauritius",
    "timezone": 4
}

print(json.dumps(countries))</code>
登录后复制

最后,如果您的输入以 JSON 形式提供,则可以在“json.loads”中使用“object_pairs_hook”参数将顺序保留为“OrderedDict”:

<code class="python">json_input = '{"a": 1, "b": 2}'

ordered_dict = json.loads(json_input, object_pairs_hook=OrderedDict)
print(ordered_dict)</code>
登录后复制

这可确保键值对保持在 JSON 输入中提供的原始顺序。

以上是使用'json.dumps”转换 Python 字典时,如何控制 JSON 对象中键的顺序?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板