Python: convertir una lista de diccionarios a json


82

Tengo una lista de diccionarios que se parecen a esto:

list = [{'id': 123, 'data': 'qwerty', 'indices': [1,10]}, {'id': 345, 'data': 'mnbvc', 'indices': [2,11]}]

y así. Puede haber más documentos en la lista. Necesito convertirlos en un documento JSON, que se puede devolver a través de una botella, y no puedo entender cómo hacerlo. Por favor ayuda. Vi preguntas similares en este sitio web, pero no pude entender las soluciones allí.

Respuestas:


118

usar la biblioteca json

import json
json.dumps(list)

por cierto, podría considerar cambiar la lista de variables a otro nombre, listes la función incorporada para la creación de una lista, puede obtener algunos comportamientos inesperados o algún código con errores si no cambia el nombre de la variable.


1
Bueno. Esto es solo una muestra, y estoy usando el nombre mylist para esto. ¿Los volcados () también funcionan para listas? Pensé que solo se suponía que debía usarse para dictados.
Apoorv Ashutosh

¿Es posible guardar el archivo como JSON Column Array o JSON Row Array?
Anoop Toffy

NOTA: reasignar lista (lista = [1,2,3]) entra en conflicto con el método incorporado list (). por favor ten en cuenta.
nikhil swami

25
import json

list = [{'id': 123, 'data': 'qwerty', 'indices': [1,10]}, {'id': 345, 'data': 'mnbvc', 'indices': [2,11]}]

Escribir en el archivo json:

with open('/home/ubuntu/test.json', 'w') as fout:
    json.dump(list , fout)

Leer archivo Json:

with open(r"/home/ubuntu/test.json", "r") as read_file:
    data = json.load(read_file)
print(data)
#list = [{'id': 123, 'data': 'qwerty', 'indices': [1,10]}, {'id': 345, 'data': 'mnbvc', 'indices': [2,11]}]

NOTA: reasignar lista (lista = [1,2,3]) entra en conflicto con el método incorporado list (). por favor ten en cuenta.
nikhil swami

1
response_json = ("{ \"response_json\":" + str(list_of_dict)+ "}").replace("\'","\"")
response_json = json.dumps(response_json)
response_json = json.loads(response_json)

2
¡Hola! Si bien esto puede resolver el problema de OP, generalmente se desaconseja escribir solo respuestas de código en SO. Proporcione una explicación de por qué esto es una solución al problema, ya que ayudará a OP a comprender mejor y beneficiará a los futuros visitantes del sitio. ¡Gracias!
d_kennetz

0

Para convertirlo en un solo diccionario con algunos valores de claves decididos, puede usar el siguiente código.

data = ListOfDict.copy()
PrecedingText = "Obs_"
ListOfDictAsDict = {}
for i in range(len(data)):
    ListOfDictAsDict[PrecedingText + str(i)] = data[i]
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.