Aquí está mi código, cosas realmente simples ...
import csv
import json
csvfile = open('file.csv', 'r')
jsonfile = open('file.json', 'w')
fieldnames = ("FirstName","LastName","IDNumber","Message")
reader = csv.DictReader( csvfile, fieldnames)
out = json.dumps( [ row for row in reader ] )
jsonfile.write(out)
Declare algunos nombres de campo, el lector usa CSV para leer el archivo y los nombres archivados para volcar el archivo en formato JSON. Aquí está el problema ...
Cada registro del archivo CSV está en una fila diferente. Quiero que la salida JSON sea la misma. El problema es que lo arroja todo en una línea gigante y larga.
Intenté usar algo como for line in csvfile:
y luego ejecutar mi código debajo de eso con lo reader = csv.DictReader( line, fieldnames)
que recorre cada línea, pero hace todo el archivo en una línea, luego recorre todo el archivo en otra línea ... continúa hasta que se agota las líneas .
¿Alguna sugerencia para corregir esto?
Editar: Para aclarar, actualmente tengo: (todos los registros en la línea 1)
[{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"},{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}]
Lo que estoy buscando: (2 registros en 2 líneas)
{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"}
{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}
No cada campo individual sangrado / en una línea separada, pero cada registro en su propia línea.
Alguna entrada de muestra.
"John","Doe","001","Message1"
"George","Washington","002","Message2"
[{..row..},{..row..},...]
no{..row..}{..row..}..
. Es decir, la salida parece ser una matriz json de objetos json, no un flujo de objetos json no conectados.