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%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.
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.
Sie haben zwei Möglichkeiten: 1. Machen Sie es selbst, 2. Lassen Sie die Datenbank die Arbeit machen
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:
Hier können Sie eine Abfrage schreiben, die Ihnen die Struktur anhand von Listenaggregationen ( LISTAGG()
in orale und GROUP_CONCAT()
in mySQL) genau gibt:
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
Tags und Links javascript asp.net json serialization c#-4.0