Home > Backend Development > Python Tutorial > How to Control JSON Key Order with Python\'s `json.dumps`?

How to Control JSON Key Order with Python\'s `json.dumps`?

Linda Hamilton
Release: 2024-10-27 05:17:03
Original
379 people have browsed it

 How to Control JSON Key Order with Python's `json.dumps`?

JSON Key Order Inconsistencies When Using "json.dumps"

In Python, JSON conversion often entails utilizing "json.dumps" to transform dictionaries into JSON objects. However, users may encounter inconsistencies in the resulting JSON key order, with the expected sequence (id, name, timezone) differing from the actual output (timezone, id, name).

To resolve this issue and enforce the desired key order, two approaches are available:

1. Utilizing the "sort_keys" Parameter:

The "sort_keys" parameter, when set to True, sorts the JSON keys alphabetically. For instance, the following code snippet would yield the desired key order:

<code class="python">import json

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

json_data = json.dumps(countries, sort_keys=True)
print(json_data)</code>
Copy after login

2. Employing OrderedDict:

Python's "collections.OrderedDict" retains the key insertion order. By utilizing OrderedDict, the expected key order can be achieved:

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

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

json_data = json.dumps(countries)
print(json_data)</code>
Copy after login

In Python 3.6 and above, keyword argument ordering is preserved by default, allowing for a more concise syntax:

<code class="python">json_data = json.dumps(OrderedDict(id=1, name="Mauritius", timezone=4))
print(json_data)</code>
Copy after login

Lastly, for JSON input, the "object_pair_hook" parameter can be utilized to preserve object order and generate an OrderedDict:

<code class="python">import json

json_data = json.loads('{"id": 1, "name": "Mauritius", "timezone": 4}', object_pairs_hook=OrderedDict)
print(json_data)</code>
Copy after login

The above is the detailed content of How to Control JSON Key Order with Python\'s `json.dumps`?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template