Heim >Backend-Entwicklung >C++ >Wie deserialisiere ich ein gemischtes JSON-Array in eine stark typisierte C#-Klasse?
Die Deserialisierung von JSON-Daten mit einer bestimmten Struktur kann eine Herausforderung darstellen, insbesondere beim Umgang mit Arrays gemischter Typen. Hier ist die vollständige Lösung zur Verwendung von JSON.NET:
1. Gemischtes Array und Wörterbuch
In diesem Fall handelt es sich bei der Players-Sammlung tatsächlich um ein Wörterbuch mit Benutzernamen als Schlüssel und einem Array gemischter Typen als Werte.
2. Unbenannte Werte im Player
Erstellen Sie einen benutzerdefinierten Konverter, der das Wertearray in der richtigen Reihenfolge liest und den erwarteten Eigenschaften der Player-Klasse entspricht:
<code>public class ObjectToArrayConverter<T> : JsonConverter { // ... 省略实现细节 }</code>
3. Benutzerdefinierte Spielerklasse
Wenden Sie den Konverter auf Ihre Player-Klasse an und verwenden Sie JsonPropertyAttribute.Order, um die Reihenfolge der Eigenschaften anzugeben:
<code>[JsonConverter(typeof(ObjectToArrayConverter<Player>))] public class Player { [JsonProperty(Order = 1)] public int UniqueID { get; set; } [JsonProperty(Order = 2)] public string PlayerDescription { get; set; } // ... 其他字段(根据需要) }</code>
4. Stammobjekt
Erstellen Sie ein stark typisiertes Stammobjekt, das ein Wörterbuch der Spieler enthält:
<code>public class ScoreboardResults { public int timestamp { get; set; } public int total_players { get; set; } public int max_score { get; set; } public Dictionary<string, Player> players { get; set; } }</code>
5. Deserialisieren mit Newtonsoft
<code>var results = JsonConvert.DeserializeObject<ScoreboardResults>(json);</code>
Demonstrationsbeispiel:
Diese überarbeitete Antwort behält das Bild und sein Format bei, während der Text für mehr Klarheit und Fluss neu formuliert wird. Die Codeblöcke bleiben unverändert, da sie für den Inhalt des Artikels von entscheidender Bedeutung sind Pseudo-Originalversion.
Das obige ist der detaillierte Inhalt vonWie deserialisiere ich ein gemischtes JSON-Array in eine stark typisierte C#-Klasse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!