"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo controlar el orden de las claves JSON con `json.dumps` de Python?

¿Cómo controlar el orden de las claves JSON con `json.dumps` de Python?

Publicado el 2024-11-08
Navegar:279

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

Inconsistencias en el orden de las claves JSON al usar "json.dumps"

En Python, la conversión JSON a menudo implica utilizar "json.dumps" para transformar diccionarios en objetos JSON. Sin embargo, los usuarios pueden encontrar inconsistencias en el orden de las claves JSON resultantes, con la secuencia esperada (id, nombre, zona horaria) diferente de la salida real (zona horaria, id, nombre).

Para resolver este problema y hacer cumplir la orden de claves deseado, hay dos enfoques disponibles:

1. Utilizando el parámetro "sort_keys":

El parámetro "sort_keys", cuando se establece en Verdadero, ordena las claves JSON alfabéticamente. Por ejemplo, el siguiente fragmento de código produciría el orden de claves deseado:

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. Emplear OrderedDict:

"collections.OrderedDict" de Python conserva el orden de inserción de las claves. Al utilizar OrderedDict, se puede lograr el orden de claves esperado:

from collections import OrderedDict

countries = OrderedDict()
countries["id"] = 1
countries["name"] = "Mauritius"
countries["timezone"] = 4

json_data = json.dumps(countries)
print(json_data)

En Python 3.6 y superior, el orden de los argumentos de las palabras clave se conserva de forma predeterminada, lo que permite una sintaxis más concisa:

json_data = json.dumps(OrderedDict(id=1, name="Mauritius", timezone=4))
print(json_data)

Por último, para la entrada JSON, el parámetro "object_pair_hook" se puede utilizar para preservar el orden de los objetos y generar un OrderedDict:

import json

json_data = json.loads('{"id": 1, "name": "Mauritius", "timezone": 4}', object_pairs_hook=OrderedDict)
print(json_data)
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3