Oto mój kod, naprawdę proste rzeczy ...
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)
Zadeklaruj niektóre nazwy pól, czytnik używa CSV do odczytania pliku, a nazwy plików do zrzucenia pliku do formatu JSON. Oto problem ...
Każdy rekord w pliku CSV znajduje się w innym wierszu. Chcę, aby dane wyjściowe JSON były takie same. Problem w tym, że zrzuca to wszystko na jedną wielką, długą linię.
Próbowałem użyć czegoś podobnego, for line in csvfile:
a następnie uruchomić mój kod poniżej tego, z reader = csv.DictReader( line, fieldnames)
którym pętla przechodzi przez każdą linię, ale robi cały plik w jednej linii, a następnie przechodzi przez cały plik w innej linii ... kontynuuje, dopóki nie skończą się linie .
Jakieś sugestie, jak to naprawić?
Edycja: Aby wyjaśnić, obecnie mam: (każdy rekord w linii 1)
[{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"},{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}]
Czego szukam: (2 rekordy w 2 liniach)
{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"}
{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}
Nie każde pole jest wcięte / w osobnym wierszu, ale każdy rekord w osobnym wierszu.
Niektóre przykładowe dane wejściowe.
"John","Doe","001","Message1"
"George","Washington","002","Message2"
[{..row..},{..row..},...]
nie{..row..}{..row..}..
. Oznacza to, że dane wyjściowe wyglądają na tablicę json obiektów json, a nie strumień niepołączonych obiektów json.