首页  >  文章  >  后端开发  >  使用“json.dumps”将 Python 字典转换为 JSON 时如何控制键的顺序?

使用“json.dumps”将 Python 字典转换为 JSON 时如何控制键的顺序?

Barbara Streisand
Barbara Streisand原创
2024-10-26 07:45:30577浏览

How do I control the order of keys when converting a Python dictionary to JSON using

使用“json.dumps”进行 JSON 对象键排序

问题:

转换时使用“json.dumps”将 Python 字典转换为 JSON 对象时,键的顺序可能与预期不符。所需的顺序(例如“id”、“名称”、“时区”)未得到维护。

解决方案:

1.排序键:

要指定所需的键顺序,请将“sort_keys”参数传递给“json.dumps”。此参数按升序对键进行排序。

json.dumps(countries, sort_keys=True)

2.使用“OrderedDict”:

为了精确控制按键顺序,请使用“collections”模块中的“OrderedDict”而不是常规字典。 “OrderedDict”中键的顺序在转换为 JSON 时保留。

Python 3.7 及以下版本:

import json
from collections import OrderedDict

ordered_countries = OrderedDict([("id", row.id), ("name", row.name), ("timezone", row.timezone)])
print(json.dumps(ordered_countries))

Python 3.8 及以上版本:

import json
from collections import OrderedDict

ordered_countries = OrderedDict()
ordered_countries["id"] = row.id
ordered_countries["name"] = row.name
ordered_countries["timezone"] = row.timezone
print(json.dumps(ordered_countries))

3。保留输入顺序 (JSON):

如果输入已经是 JSON 对象,并且您希望在输出中保留其键顺序,请将“object_pairs_hook”参数传递给“json.loads”。此参数采用一个可调用函数,该可调用函数根据 JSON 对象的键值对返回“OrderedDict”。

import json
from collections import OrderedDict

input_json = '{"a": 1, "b": 2}'
ordered_json = json.loads(input_json, object_pairs_hook=OrderedDict)

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn