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 Dans l'ordre des clés 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 des clés souhaité :
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)
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 :
from collections import OrderedDict
countries = OrderedDict()
countries["id"] = 1
countries["name"] = "Mauritius"
countries["timezone"] = 4
json_data = json.dumps(countries)
print(json_data)
Dans Python 3.6 et supérieur, l'ordre des arguments des mots clés est conservé par défaut, permettant une syntaxe plus concise :
json_data = json.dumps(OrderedDict(id=1, name="Mauritius", timezone=4))
print(json_data)
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 :
import json
json_data = json.loads('{"id": 1, "name": "Mauritius", "timezone": 4}', object_pairs_hook=OrderedDict)
print(json_data)
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3