Ich arbeite derzeit mit einer TXT-Datei, die mehrere JSON-Objekte aus einem API-Aufruf enthält. Ich suche nach einer Möglichkeit, alle diese Objekte in eine CSV-Datei zu analysieren. In der Vergangenheit war es mir möglich, ein JSON-Objekt in eine CSV-Datei umzuwandeln, aber ich bin mir nicht sicher, wie es für mehrere JSON-Objekte funktioniert.Analysieren mehrerer JSON-Objekte in einer CSV-Datei mit Ruby
Beispiel JSON:
[{"field1":["value1"], "field2": ["value2"]}]
[{"field1":["value1"], "field2": ["value2"]}]
[{"field1":["value1"], "field2": ["value2"]}]
Der Code, den ich zur Zeit bin mit JSON in eine CSV schieben unten, obwohl es nur auf einem JSON-Objekt scheint zu funktionieren. Was ich glaube, ich brauche eine Art Schleife, die jedes Objekt durchstößt und dann erneut schleift.
require 'csv'
require 'json'
CSV.open("sample.csv", "w") do |csv|
csv << ["field1",
"field2"
]
JSON.parse(File.open("json.txt").read).each do |hash| #open json to parse
csv << hash.values
end
end
Kann jemand mir irgendwelche Vorschläge geben? Ich habe Lösungen für das Parsen von mehreren Objekten gefunden, aber keine, die mir mit dem CSV-Teil wirklich helfen würden.
hinzufügen Was ist die Ausgabe gerade jetzt? Es scheint, als müssten Sie Werte auspacken. Versuchen Sie hash.values.flatten, auch Hash sollte ein Array sein, also müssen Sie auch den Wert herausnehmen. –
Sie haben eine Datei mit mehreren JSON-Dokumenten. Wenn Ihre Datei, wie in den Beispieldaten, in jeder Zeile ein einzelnes JSON-Dokument enthält, verwenden Sie 'foreach' anstelle von' read' und verarbeiten Sie jede Zeile separat. Wenn Sie der Autor des JSON sind, sollten Sie die Ausgabe so korrigieren, dass sie richtiges JSON erzeugt, das ein einzelnes Array von Hashes sein sollte (natürlich verschlüsselt in JSON). Nachdem Sie eine Zeile analysiert haben, übergeben Sie sie bei Bedarf an CSV. –
@IvanYouroff im Moment kann der Code, den ich verwende, erfolgreich eine CSV-Datei von einem JSON-Objekt erstellen. –