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
Freigeben: 2025-01-24 04:16:07
Original
196 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

5. Deserialisieren mit Newtonsoft

<code>var results = JsonConvert.DeserializeObject<ScoreboardResults>(json);</code>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage