Heim >Backend-Entwicklung >C++ >Wie deserialisiere ich ein gemischtes JSON-Array in eine stark typisierte C#-Klasse?

Wie deserialisiere ich ein gemischtes JSON-Array in eine stark typisierte C#-Klasse?

Linda Hamilton
Linda HamiltonOriginal
2025-01-24 04:16:07157Durchsuche

How to Deserialize a Mixed-Type JSON Array into a Strongly Typed C# Class?

Deserialisieren Sie ein Wertearray mit einem festen Muster in eine stark typisierte Datenklasse

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn