Pourquoi l'ordre des clés dans ma sortie JSON est-il différent de l'ordre dans mon dictionnaire Python utilisant « json.dumps » ?

Mary-Kate Olsen
Libérer: 2024-10-27 21:08:01
original
779 Les gens l'ont consulté

Why is the order of keys in my JSON output different from the order in my Python dictionary using `json.dumps`?

Éléments hors service dans les objets JSON avec "json.dumps" ?

Dans votre code, vous utilisez "json .dumps" pour convertir une liste de dictionnaires en JSON. Cependant, vous avez remarqué que l'ordre des clés dans chaque dictionnaire n'est pas celui attendu. Plus précisément, vous devez que les clés apparaissent dans l'ordre "id", "name" et "timezone".

Raisonnement

Les deux dictionnaires Python (avant Python 3.7) et les objets JSON sont des collections non ordonnées. Cela signifie que l'ordre des clés dans un dictionnaire ou un objet JSON n'est pas garanti.

Solution 1 : Trier les clés

Vous pouvez utiliser le paramètre "sort_keys" de "json.dumps" pour trier les clés dans le JSON de sortie. Par exemple :

<code class="python">import json

countries.append({"id":row.id,"name":row.name,"timezone":row.timezone})
print(json.dumps(countries, sort_keys=True))</code>
Copier après la connexion

Cela affichera JSON avec les clés dans l'ordre suivant :

[
   {"id": 1, "name": "Mauritius", "timezone": 4}, 
   {"id": 2, "name": "France", "timezone": 2}, 
   {"id": 3, "name": "England", "timezone": 1}, 
   {"id": 4, "name": "USA", "timezone": -4}
]
Copier après la connexion

Solution 2 : Utilisation de OrderedDict

Si vous avez besoin d'un ordre spécifique pour les clés, vous pouvez utiliser la classe "collections.OrderedDict". OrderedDict conserve l'ordre des clés qui y sont insérées. Par exemple :

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

countries_by_id = OrderedDict()
countries_by_id["id"] = row.id
countries_by_id["name"] = row.name
countries_by_id["timezone"] = row.timezone

print(json.dumps(countries_by_id))</code>
Copier après la connexion

Cela affichera JSON avec les clés dans l'ordre "id", "name" et "timezone".

Remarque supplémentaire

Dans Python 3.6 et versions ultérieures, l'ordre des arguments des mots-clés est conservé dans les dictionnaires. Cela signifie que vous pouvez obtenir le même résultat qu'en utilisant OrderedDict en spécifiant simplement les clés dans l'ordre souhaité lors de la création du dictionnaire :

<code class="python">countries = {"id": row.id, "name": row.name, "timezone": row.timezone}</code>
Copier après la connexion

Cela conservera automatiquement l'ordre des clés dans le JSON de sortie.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!