Datensatz zum JSON-Baum durch Zusammenführen

8

Sagen Sie, ich habe den folgenden Datensatz.

%Vor%

Ich möchte dies wie unter JSON-Format in ETWAS umwandeln, damit ich in ein TreeView-Steuerelement laden kann. Was wird der beste Weg sein, das zu tun? Der Hauptunterschied besteht darin, die gleiche Kategorie oder Elemente zusammenzuführen! Ich kann Knoten zu Knoten in C # analysieren, es mit dem vorherigen Knoten überprüfen, es zusammenführen, wenn es gleich ist! und erstelle es manuell, aber gibt es eine andere Alternative anstelle dieses langen und komplexen Prozesses?

%Vor%     
Robert 18.04.2015, 06:00
quelle

6 Antworten

2

Verwenden Sie ein Array.

%Vor%

Hier ist ein Beispiel, wie Sie das verwenden würden.

%Vor%

Bitte beachten Sie, dass der obige Code nur als Beispiel dient. Es sollte gut funktionieren, aber vielleicht habe ich beim Schreiben einen Fehler gemacht. Dies war nur um meinen Standpunkt zu zeigen.

    
Joseph A. 18.04.2015 07:06
quelle
2

Was Sie brauchen, ist eine Gruppe von, nicht wahr?

Versuchen Sie Linq. Dies ist nur ein (ungetesteter) Ansatz, aber kann Ihnen eine Idee geben, wo Sie anfangen sollen:

%Vor%

Dann geben Sie den json mit Json ActionResult des Controllers zurück:

%Vor%     
Denis Ali 21.04.2015 16:27
quelle
1

Versuchen Sie, das Json.NET-Framework zu verwenden, um ein DataSet in eine JSON-Zeichenfolge umzuwandeln.

%Vor%     
MAlvarez 21.04.2015 16:06
quelle
1

Sie müssen keine Zusammenführung durchführen. Ich weiß, dass Sie dies in C # tun, und ich werde Ihnen die Antwort in Javascript zeigen, aber wir wissen, dass C # Arrays und HashMaps und eine JSONSerializer-Klasse hat, so dass dies als sinnvoller Pseudocode dienen sollte.

%Vor%

Der Trick ist einfach ... egal welche Sprache, Sie müssen in der Lage sein zu sagen ...

%Vor%

... ohne dass Sie bellen. Und dann können Sie einen der verfügbaren JSON-Serialisierer verwenden. Der Code sollte einfach zu lesen sein, auch wenn es nicht das absolut performanteste Bit des Codes ist.

Wenn Geschwindigkeit wichtig ist, oder wenn Sie dies viel tun, ist es teuer, eine Sammlung zu erstellen, nur um sie zu serialisieren und zu dekonstruieren. Investieren Sie ein wenig Zeit mit dem Schreiben eines JSON-Encoders für Ihr Objekt, der das Popping, Pushing und Comparison ausführt und Strings anfügt, während es durch Ihre Sammlung arbeitet.

    
Michael Hays 27.04.2015 15:16
quelle
1

Sie haben zwei Möglichkeiten: 1. Machen Sie es selbst, 2. Lassen Sie die Datenbank die Arbeit machen

  1. Für ein Ergebnis, das in der Frage ( select col1, col2, ... order by col1, col2, ... ) angezeigt wird, können Sie es einfach wie folgt parsen:

    %Vor%
  2. Hier können Sie eine Abfrage schreiben, die Ihnen die Struktur anhand von Listenaggregationen ( LISTAGG() in orale und GROUP_CONCAT() in mySQL) genau gibt:

    %Vor%
maraca 27.04.2015 18:43
quelle
0

Angenommen, die von der Datenbank zurückgegebene Abfrage ist wie folgt (jede Zeile, nur etwas, was wir hier brauchen)

%Vor%

Sie brauchen nur diesen Code in Javascript:

Erstellen Sie zuerst ein leeres Objekt wie:

%Vor%

Dann rufe diesen Code in deiner foreach oder jedem wo du jeden Zeilenwert bekommst

%Vor%

Ich habe eine Änderung vorgenommen, nur der letzte Teil ist Array Rest ist Objekt, hoffe, es ist hilfreich, all diese Zeile bedeutet so etwas

%Vor%

Sie müssen nur sicher sein, wenn sie vorhanden sind, bauen Sie sie nicht erneut

    
Taurus 28.04.2015 04:04
quelle