Rekursiv hierarchischen JSON-Baum erstellen?

8

Ich habe eine Datenbank mit Eltern-Kind-Verbindungen. Die Daten sehen wie folgt aus, können aber wie gewünscht dargestellt werden (Wörterbücher, Liste von Listen, JSON usw.).

%Vor%

Die Ausgabe, die ich brauche, ist eine hierarchische JSON-Struktur, die mit d3 gerendert wird. In den Daten gibt es diskrete Unterbäume, die ich an einen Wurzelknoten anschließe. Also muss ich rekursiv über die Links gehen und die Baumstruktur aufbauen. Das weiteste, was ich erreichen kann, besteht darin, durch alle Menschen zu iterieren und ihre Kinder anzuhängen, aber ich kann mir nicht vorstellen, die Links höherer Ordnung zu machen (z. B. wie man eine Person mit Kindern an das Kind eines anderen anhängt). Dies ist ähnlich zu einer anderen Frage hier , aber ich habe keine Möglichkeit dazu kenne die Wurzelknoten im Voraus, also kann ich die akzeptierte Lösung nicht implementieren.

Ich suche die folgende Baumstruktur aus meinen Beispieldaten.

%Vor%

Diese Struktur wird in meinem d3-Layout so dargestellt.

    
Andrew Barr 02.08.2013, 19:53
quelle

3 Antworten

7

Um die Stammnotizen zu identifizieren, können Sie links entpacken und nach Eltern suchen, die keine Kinder sind:

%Vor%

Dann können Sie die rekursive Methode anwenden:

%Vor%

Ich habe einen Satz verwendet, um die Wurzelknoten zu bekommen, aber wenn die Reihenfolge wichtig ist, können Sie eine Liste verwenden und entfernen Sie die Duplikate .

    
Paulo Almeida 02.08.2013, 21:09
quelle
3

Versuchen Sie folgenden Code:

%Vor%     
falsetru 02.08.2013 20:08
quelle
0

Wenn Sie die Daten als Hierarchie in der HTML / JS-Datei selbst formatieren möchten, werfen Sie einen Blick auf:

Erzeuge das (multilevel) flare.json Datenformat von flat Json

Falls Sie viele Daten haben, wird die Web-Konvertierung schneller sein, da sie die Reduce-Funktionalität verwendet, während Python keine funktionale Programmierung hat.

Übrigens: Ich arbeite auch an demselben Thema, d. h. erzeuge die kollabierbare Baumstruktur in d3.js. Wenn Sie mitarbeiten möchten, ist meine E-Mail-Adresse: [email protected].

    
synaptikon 02.08.2013 20:19
quelle

Tags und Links