使用“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中文网其他相关文章!