Ich verwende C# .NET 4.0, um ein JSON in ein benutzerdefiniertes Objekt zu analysieren. Ich verwende JavaScriptSerializer.Deserialize, um es einer von mir geschriebenen Klasse zuzuordnen. Das Problem ist, die Name/Wert-Paare der JSON sind nicht statisch, und variieren je nach dem Argument isChain, wie in diesem JSON Fragment (bessere Verbindung unten) gesehen:Deserialisieren eines JSON mit Variablen Name/Wert-Paaren in Objekt in C#
{
"STATE_WALK_LEFT":{
"isChain":"1",
"x":"1"
},
"STATE_WALK_LEFT_0":{
"x":"0"
},
"STATE_WALK_LEFT_1":{
"x":"40"
},
"STATE_WALK_LEFT_2":{
"x":"80"
},
"STATE_WALK_RIGHT":{
"isChain":"0"
},
"STATE_RUN_LEFT":{
"isChain":"0"
}
}
Die Ketten können überall von _STATE_0 zu _STATE_25 Einträge haben in den Ketten. Gibt es eine Möglichkeit, diese Daten zu speichern, so dass ich Klassen schreiben muß nicht 12 * 26 leer wie so:
public StateWalkLeft0 STATE_WALK_LEFT { get; set; }
public StateWalkLeft0 STATE_WALK_LEFT_0 { get; set; }
public StateWalkLeft1 STATE_WALK_LEFT_1 { get; set; }
public StateWalkLeft2 STATE_WALK_LEFT_2 { get; set; }
public StateWalkLeft3 STATE_WALK_LEFT_3 { get; set; }
Gibt es eine Bibliothek oder eine andere Weise, die ich teilweise nur zu analysieren, um die STATE_0 verwenden könnte , STATE_1, usw. Felder? Können Sie vielleicht eine Möglichkeit vorschlagen, diese kürzlich hinzugefügten JSON-Paare hinzuzufügen?
Edited zu klären: Um eine Vorstellung davon zu bekommen, was mit arbeite ich, hier ist die Klasse von den JSONs abgeleitet:
Check out my full Class to get an idea of what the JSONs contain
Grundsätzlich Ich brauche nur eine Art und Weise zu speichern, Diese kürzlich in dieser Klasse implementierten Ketten werden irgendwie zur Verarbeitung benötigt. Alle diese Klassen/Eigenschaften werden aus diesen JSONs generiert.
"Ich würde es vorziehen, keine Rekursion, 3rd-Party-Bibliotheken oder Deserialisierung in var/dynamic zu verwenden." Viel Glück, eine Lösung innerhalb dieser Grenzen zu finden –
Sie könnten dies leicht mit [Json.NET] (http://json.codeplex.com/) – casperOne
@ CasperOne +1 tun, aber ich würde einen Vorschlag machen mit [fastJSON] (http://www.codeproject.com/Articles/159450/fastJSON) darüber hinaus. Json.NET ist sehr langsam und groß und kann aufgrund seiner Komplexität schwierig sein, Änderungen vorzunehmen. – erodewald