Maison  >  Article  >  développement back-end  >  Comment contrôler l'ordre des clés JSON avec « json.dumps » de Python ?

Comment contrôler l'ordre des clés JSON avec « json.dumps » de Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-27 05:17:03258parcourir

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

Incohérences dans l'ordre des clés JSON lors de l'utilisation de "json.dumps"

En Python, la conversion JSON implique souvent l'utilisation de "json.dumps" pour transformer dictionnaires en objets JSON. Cependant, les utilisateurs peuvent rencontrer des incohérences dans l'ordre des clés JSON résultant, la séquence attendue (identifiant, nom, fuseau horaire) différant de la sortie réelle (fuseau horaire, identifiant, nom).

Pour résoudre ce problème et appliquer le ordre de clé souhaité, deux approches sont disponibles :

1. Utilisation du paramètre "sort_keys" :

Le paramètre "sort_keys", lorsqu'il est défini sur True, trie les clés JSON par ordre alphabétique. Par exemple, l'extrait de code suivant donnerait l'ordre de clé souhaité :

<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>

2. En utilisant OrderedDict :

"collections.OrderedDict" de Python conserve l'ordre d'insertion des clés. En utilisant OrderedDict, l'ordre des clés attendu peut être obtenu :

<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>

Dans Python 3.6 et versions ultérieures, l'ordre des arguments des mots-clés est conservé par défaut, permettant une syntaxe plus concise :

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

Enfin, pour l'entrée JSON, le paramètre "object_pair_hook" peut être utilisé pour préserver l'ordre des objets et générer un OrderedDict :

<code class="python">import json

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn