Convertir un JSON a CSV
Python
Publicado el 23 de Julio del 2019 por Xavi (548 códigos)
5.505 visualizaciones desde el 23 de Julio del 2019
Este código muestra como convertir un simple json a un archivo CSV
import json
myJson="""[{"ref":"mA", "precio":"10", "codigo":"001"},
{"ref":"mB", "precio":"1", "codigo":"002"},
{"ref":"mC", "precio":"13", "codigo":"003"},
{"ref":"mD", "precio":"8", "codigo":"004"},
{"ref":"mE", "precio":"7", "codigo":"005"},
{"ref":"mF", "precio":"15", "codigo":"006"},
{"ref":"mG", "precio":"18", "codigo":"007"}]"""
"""
Si el json se encuentra en un archivo externo, lo cargariamos así:
with open('miArchivo.json', 'r') as json_file:
data=json.load(json_file)
"""
# cargamos la cadena json en un objeto
data=json.loads(myJson)
def readJson(myList):
"""
Funcion que lee los valores del json.
Parameters:
mylist object
Return:
list
"""
# header es una lista que contendra la cabecera del archivo csv
header=[]
# line es una lista de listas que contendra todas las lineas
line=[]
for el in myList:
line.append([])
for k,v in el.items():
line[len(line)-1].append(v)
if len(header)<len(line[0]):
header.append(k)
return [header]+line
def saveToCSV(myFile, myList, delimiter=";"):
"""
Funcion que guarda la lista en el archivo.
Parameters:
myFile string - nombre del archivo donde guardar el CSV
myList list - lista de listas con todas las lineas a guardar en el archivo CSV
delimiter string - delimitador a utilizar entre los valores del archivo CSV
"""
with open(myFile,"w") as f:
for el in myList:
f.write(delimiter.join(el)+"\n")
result=readJson(data)
saveToCSV("x.csv",result)
crear este archivo CSV: