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