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!