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)
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