Wie erstellt man eine Hierarchie in JSON-String aus String-Array?

8

Ich versuche, json Zeichenfolge für die Hierarchie wie folgt zu generieren:

%Vor%

Jede der obigen Abfragen gibt die folgenden Felder zurück:

%Vor%

Jetzt versuche ich eine JSON-Zeichenfolge für obige Entitäten wie unten zu generieren:

Erwartete Ausgabe:

%Vor%

Code:

%Vor%

Jetzt, wenn ich keine Eltern habe und json Schnur für nur Kind dann erzeugen möchte, funktioniert unter Code gut:

%Vor%

Ausgabe:

%Vor%

Aber jetzt möchte ich JSON für meine Hierarchie mit solch einer integrierten Methode generieren.

Ich weiß, dass ich eine JSON-Zeichenkette loopen, anhängen und erstellen kann, aber ich möchte das auf eine bessere Weise machen, wie ich es für mein Kind getan habe.

Aktualisierung:

%Vor%     
Learning-Overthinker-Confused 01.09.2017, 11:56
quelle

6 Antworten

2

Vielleicht vermisse ich etwas. Wenn Sie die benötigten Klassen in der Heirachy erstellen, sie mit Daten instanziieren und anschließend serialisieren, wird die Struktur für Sie erstellt.

%Vor%     
David Yates 01.09.2017 14:13
quelle
2

AKTUALISIERT:

Ok, noch ein Versuch.

Ich habe eine Klasse erstellt, die die Informationen in einer Kind-Eltern-Struktur ähnlich wie Ihre Vorschläge enthält. Ich fügte auch einen benutzerdefinierten kleinen Parser hinzu, der rekursiv arbeitet. Vielleicht ist das, was Sie brauchen und / oder was gibt Ihnen die Ideen, die Sie brauchen, um Ihr Problem zu beheben.

Ich habe auch die Ausgabe etwas verändert, indem ich die spitzen Klammern ("[]") hinzugefügt habe. Ich denke, das ist, was Sie mit mehreren Kindern brauchen werden. Zumindest sagt mir der JSON-Validator, dass ich unten gepostet habe. Wenn Sie sie nicht benötigen / wollen, entfernen Sie sie einfach im Parser.

Ich glaube nicht, dass Sie den in Ihrem Beispiel verwendeten Parser verwenden können, ohne irgendeine Form von zusätzlichen Feldern zu haben, wie ich es in meiner vorherigen Antwort gezeigt habe, da diese Parser normalerweise nach Eigenschaftsnamen als Felder suchen dynamisch während der Laufzeit.

Ich denke auch nicht, dass es Ihnen möglich ist, eine dynamische Tiefe Ihrer Eltern-Kind-Kind-Kind-Beziehung mit Listen, Arrays oder Wörterbüchern zu erstellen, weil diese Strukturen eine festgelegte Tiefe haben, sobald sie sie haben sind deklariert.

Hoffe, das hilft. Wenn nicht, lass es mich wissen.

Klasse:

%Vor%

Parser:

%Vor%

Verwendung:

%Vor%

Ausgabe und Link zum JSON-Validator:

Ссылка

%Vor%     
Smogen 05.09.2017 13:52
quelle
1

Sie können dynamic :

verwenden %Vor%

Ergebnis:

%Vor%     
Timur Lemeshko 01.09.2017 14:50
quelle
1

Ok, versuchen wir es so. Vor allem, da ich dein Vorwort verstehe: du hast Felder der Eigenschaften der Eltern und des Kindes und du musst es in json-Objekt umwandeln. Der Punkt ist hier:

%Vor%

Verwenden Sie dynamic und ExpandoObject , um ein Wörterbuch in ein Objekt

zu konvertieren

Der andere Code ist trivial: Setzen Sie alle Ihre Objekte mit dynamic auf einen Typ  und serialisieren es.

Der vollständige Code:

%Vor%

Und Ergebnisausgabe:

%Vor%     
Timur Lemeshko 04.09.2017 09:18
quelle
1

Sie können jedes Objekt übergeben, auch wenn Sie keine feste Struktur haben:

%Vor%

Mit diesem.

    
Marco Salerno 05.09.2017 13:35
quelle
1

Der beste Weg, um dieses Ergebnis zu erhalten
- Sie müssen eine neue Klasse erstellen, die die Beziehung aller Klassen hat. Dann benutze die Newtonsoft.Json.JsonConvert.SerializeObject (neue Organisation)
Let erstellt eine neue Klasse namens Organisation. Fügen Sie die Beziehung hinzu, die Sie in Json sehen möchten. Dann konvertieren Sie mit JsonConvert in JSON.
 Oder Sie können die folgende dynamische Schleife verwenden

%Vor%

dynamisch [] Abteilung = neues Objekt [] {neu {AbteilungId = 1, Name="Abteilung1"}, neu {AbteilungId = 2, Name="Abteilung2"}};

%Vor%     
Shyam Sa 07.09.2017 13:00
quelle

Tags und Links