Heim >Backend-Entwicklung >C++ >Wie deserialisiere ich ein JSON-Array aus Werten gemischter Typen in stark typisierte C#-Datenklassen?
Deserialisieren Sie ein Wertearray mit einem festen Muster in eine stark typisierte Datenklasse
Frage:
Bei der Deserialisierung von JSON-Daten in einem bestimmten Format in stark typisierte Datenklassen gibt es Herausforderungen. Die Daten enthalten ein Array von Spielern mit gemischten Zeichenfolgen- und Ganzzahlwerten, und die Spielerklasse besteht vollständig aus unbenannten Werten in einer festen Reihenfolge.
Lösung:
Eine Kombination aus benutzerdefinierten Konvertern und Datenvertragsattributen ermöglicht eine effiziente Deserialisierung:
Erstellen Sie einen benutzerdefinierten Konverter:
Implementieren Sie einen benutzerdefinierten Konverter, der Objekte in Arrays konvertiert:
<code class="language-c#">public class ObjectToArrayConverter<T> : JsonConverter { // 实现 WriteJson 和 ReadJson 函数 }</code>
Benutzerdefinierte Konverter- und Datenvertragseigenschaften auf Player anwenden:
Wenden Sie einen benutzerdefinierten Konverter auf die Player-Klasse an und verwenden Sie das Datenvertragsattribut, um die Reihenfolge seiner Eigenschaften anzugeben:
<code class="language-c#">[JsonConverter(typeof(ObjectToArrayConverter<Player>))] [DataContract] public class Player { [DataMember(Order = 1)] public int UniqueID { get; set; } [DataMember(Order = 2)] public string PlayerDescription { get; set; } }</code>
Ändern Sie das Stammobjekt in ein Wörterbuch:
Ändern Sie den Typ des Spielerattributs im Stammobjekt in ein Wörterbuch und verwenden Sie Spielerbenutzernamen als Schlüssel:
<code class="language-c#">public class ScoreboardResults { // ... public Dictionary<string, Player> players { get; set; } }</code>
Beispiel:
Das folgende Codebeispiel demonstriert die Deserialisierung mit dieser Lösung:
<code class="language-c#">using Newtonsoft.Json; var json = "{...}"; var results = JsonConvert.DeserializeObject<ScoreboardResults>(json);</code>
Weitere Anweisungen:
Das obige ist der detaillierte Inhalt vonWie deserialisiere ich ein JSON-Array aus Werten gemischter Typen in stark typisierte C#-Datenklassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!