Maison >développement back-end >Tutoriel Python >Comment pouvez-vous contrôler l'ordre des clés dans les objets JSON lors de la conversion de dictionnaires Python à l'aide de « json.dumps » ?
Le problème des clés non ordonnées dans les objets JSON se pose lors de l'utilisation de la fonction "json.dumps" pour convertir Python dictionnaires au format JSON, conduisant à des classements inattendus. Cela se produit parce que les dictionnaires Python et les objets JSON manquent d'ordre inhérent.
Pour résoudre ce problème, le paramètre "sort_keys" peut être utilisé dans "json.dumps" pour trier les clés par ordre alphabétique croissant. Voici un exemple :
<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>
Cela produit le résultat souhaité avec des clés triées :
<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>
Une autre option consiste à utiliser la classe "collections.OrderedDict", qui conserve l'ordre des clés. paires de valeurs. Voici un exemple :
<code class="python">from collections import OrderedDict countries = OrderedDict([ ("id", 1), ("name", "Mauritius"), ("timezone", 4) ]) print(json.dumps(countries))</code>
Cela entraîne également une sortie JSON ordonnée :
<code class="json">{"id": 1, "name": "Mauritius", "timezone": 4}</code>
Depuis Python 3.6, l'ordre des arguments des mots-clés est conservé par défaut, offrant ainsi un moyen plus simple de obtenir l'ordre souhaité :
<code class="python">countries = { "id": 1, "name": "Mauritius", "timezone": 4 } print(json.dumps(countries))</code>
Enfin, si votre entrée est fournie au format JSON, l'argument "object_pairs_hook" peut être utilisé dans "json.loads" pour conserver l'ordre en tant que "OrderedDict" :
<code class="python">json_input = '{"a": 1, "b": 2}' ordered_dict = json.loads(json_input, object_pairs_hook=OrderedDict) print(ordered_dict)</code>
Cela garantit que les paires clé-valeur restent dans l'ordre d'origine dans lequel elles ont été fournies dans l'entrée JSON.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!