Heim > Backend-Entwicklung > C++ > Wie deserialisiere ich ein JSON-Array aus Werten gemischter Typen in stark typisierte C#-Datenklassen?

Wie deserialisiere ich ein JSON-Array aus Werten gemischter Typen in stark typisierte C#-Datenklassen?

Patricia Arquette
Freigeben: 2025-01-24 04:26:10
Original
921 Leute haben es durchsucht

How to Deserialize a JSON Array of Mixed-Type Values into Strongly Typed C# Data Classes?

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:

  1. 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>
    Nach dem Login kopieren
  2. 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>
    Nach dem Login kopieren
  3. Ä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>
    Nach dem Login kopieren

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

Weitere Anweisungen:

  • Denken Sie bei der Verwendung von Datenvertragsattributen daran, einen Verweis auf den System.Runtime.Serialization-Namespace hinzuzufügen.
  • Diese Lösung geht von einem festen Schema mit bekannten Eigenschaftsnamen aus. Für dynamische Modi sind möglicherweise fortgeschrittenere Deserialisierungstechniken erforderlich.

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!

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