Python - Konvertiere die CSV-Datei in JSON

8

Ich muss eine CSV-Datei in ein hierarchisches JSON-Objekt konvertieren (vorzugsweise mit Python). Ich dachte, dass das Skript, das ich habe (unten), eine korrekte Aufgabe der Konvertierung in JSON ausführt, aber die JavaScript-Bibliothek, in die ich die JSON-Daten füge (D3.js), funktioniert nicht damit.

Die CSV-Datei sieht folgendermaßen aus:

%Vor%

Im Moment habe ich den folgenden Code, der rekursiv das hierarchische Array erstellt:

%Vor%

Was mir das jetzt bringt, ist ungefähr so:

%Vor%

Ich denke, das könnte technisch zu den JSON-Spezifikationen passen, aber die Bibliothek, der ich versuche, die JSON-Daten zu füttern (D3.js), scheint nichts damit zu tun zu haben. Liegt es daran, dass die Reihenfolge der Elemente nicht korrekt ist (d. H. Das Element "children" steht vor dem Element "name")? Ist es etwas Grundlegender, was ich tue?

(Die Datei, deren Struktur ich versuche zu finden, befindet sich hier .)

    
tchaymore 22.09.2011, 19:15
quelle

4 Antworten

6

Würde das nicht funktionieren?

%Vor%     
g19fanatic 06.10.2011 15:59
quelle
0

Die Reihenfolge der Elemente ist für json nicht wichtig.

Der Json, den du produzierst, ist falsch. Das Beispiel, das Sie angegeben haben und das Sie versuchen zu vergleichen, hat keinen "Subject" -Schlüssel auf der obersten Ebene. Es zeigt nur "name" = & gt; "flare" und eine Liste von Kindern. Dein Skript erstellt json mit einem "Betreff" -Schlüssel.

Anstelle von

%Vor%

probiere

aus %Vor%

Ich weiß nichts über D3.js, daher kann ich nicht sagen, ob es ein Objekt erwartet, das einer genauen Struktur folgt.

Tipp: Ein gutes Werkzeug, um die Struktur von JSON-Objekten zu überprüfen, ist Ссылка . Fügen Sie einfach Ihre Zeichenfolge ein und klicken Sie auf "Zur Baumansicht". Es wird höllisch finden Sie Unterschiede zwischen was Sie haben und was Sie wollen sehr leicht.

    
lullis 06.10.2011 16:11
quelle
0

D3 erwartet, dass der Wert in JSON auch in Anführungszeichen steht. so z.B. "level": 3 sollte "level" sein: "3". Wenn Sie diese Daten in D3 zur Berechnung verwenden, muss es wieder eine Zahl sein. Wenn Sie es verwenden, können Sie einfach + data.xxx.yyy.level anstatt data.xxx.yyy.level im d3-Code verwenden, um zu drehen es in eine Zahl.

    
Tom Jorissen 22.08.2013 08:05
quelle
-1
%Vor%     
Mohan 09.05.2013 13:56
quelle

Tags und Links