"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 > ¿Por qué el orden de las claves en mi salida JSON es diferente del orden en mi diccionario Python usando `json.dumps`?

¿Por qué el orden de las claves en mi salida JSON es diferente del orden en mi diccionario Python usando `json.dumps`?

Publicado el 2025-02-06
Navegar:638

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

de elementos fuera de pedido en los objetos json con "json.dumps"?

en su código, está usando "json .Dumps "para convertir una lista de diccionarios en JSON. Sin embargo, ha notado que el orden de las claves dentro de cada diccionario no es el esperado. Específicamente, necesita que las claves aparezcan en el orden de "id", "nombre" y "TimeZone".

razonando

ambos Diccionarios de Python (antes de Python 3.7) y los objetos JSON son colecciones desordenadas. Esto significa que el orden de las claves en un diccionario o objeto JSON no está garantizado.

Solución 1: Clasificación de claves

puede usar el parámetro "sort_keys" de "JSON.DUMPS" para ordenar las claves en la salida JSON. Por ejemplo:

import json

countries.append({"id":row.id,"name":row.name,"timezone":row.timezone})
print(json.dumps(countries, sort_keys=True))

esto generará JSON con las claves en el siguiente orden:

[
   {"id": 1, "name": "Mauritius", "timezone": 4}, 
   {"id": 2, "name": "France", "timezone": 2}, 
   {"id": 3, "name": "England", "timezone": 1}, 
   {"id": 4, "name": "USA", "timezone": -4}
]

Solución 2: Usando ordeneddict

Si necesita un pedido específico para las teclas, puede usar la clase "Collections.OrderedDict". Ordeneddict preserva el orden de las claves insertadas en él. Por ejemplo:

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

esto generará JSON con las claves en el orden de "id", "nombre" y "zone ".

nota adicional

en Python 3.6 y más tarde, el orden de los argumentos de palabras clave se conserva en los diccionarios. Esto significa que puede lograr el mismo resultado que usar Ordereddict simplemente especificando las claves en el orden deseado al crear el diccionario:

countries = {"id": row.id, "name": row.name, "timezone": row.timezone}

esto preservará automáticamente el orden de las claves en la salida JSON.

Ú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