Hier ist mein Code, wirklich einfaches Zeug ...
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)
Deklarieren Sie einige Feldnamen, der Leser verwendet CSV zum Lesen der Datei und die Dateinamen zum Speichern der Datei in ein JSON-Format. Hier ist das Problem ...
Jeder Datensatz in der CSV-Datei befindet sich in einer anderen Zeile. Ich möchte, dass die JSON-Ausgabe genauso ist. Das Problem ist, dass alles auf eine riesige, lange Schlange gestellt wird.
Ich habe versucht, so etwas wie zu verwenden for line in csvfile:
und dann meinen Code unter dem Code auszuführen, mit reader = csv.DictReader( line, fieldnames)
dem jede Zeile durchlaufen wird, aber es wird die gesamte Datei in einer Zeile ausgeführt und dann die gesamte Datei in einer anderen Zeile durchlaufen ... wird fortgesetzt, bis keine Zeilen mehr vorhanden sind .
Irgendwelche Vorschläge zur Korrektur?
Bearbeiten: Zur Verdeutlichung habe ich derzeit: (jeden Datensatz in Zeile 1)
[{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"},{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}]
Was ich suche: (2 Datensätze in 2 Zeilen)
{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"}
{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}
Nicht jedes einzelne Feld wird in einer separaten Zeile eingerückt, sondern jeder Datensatz in einer eigenen Zeile.
Einige Beispieleingaben.
"John","Doe","001","Message1"
"George","Washington","002","Message2"
[{..row..},{..row..},...]
nicht produzieren{..row..}{..row..}..
. Das heißt, die Ausgabe sieht so aus, als wäre es ein JSON-Array von JSON-Objekten, kein Stream von nicht verbundenen JSON-Objekten.