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

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

Barbara Streisand
Barbara Streisandoriginal
2024-10-29 21:17:30962parcourir

How can you control the order of keys in JSON objects when converting Python dictionaries using `json.dumps`?

Réorganisation des éléments dans les objets JSON à 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!

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