Heim >Backend-Entwicklung >C++ >Wie kann ich JSON.Net-Eigenschaften als Werte statt als Objekte serialisieren/deserialisieren?

Wie kann ich JSON.Net-Eigenschaften als Werte statt als Objekte serialisieren/deserialisieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-30 12:57:10640Durchsuche

How Can I Serialize/Deserialize JSON.Net Properties as Values Instead of Objects?

Json.Net: Eigenschaften als Werte statt als Objekte behandeln

Bei Verwendung von JSON.Net zur Darstellung komplexer Objekte, wie z. B. dem Auto und Bei den in der Einleitung beschriebenen StringId-Klassen ist es manchmal wünschenswert, Eigenschaften als einfache Werte und nicht als verschachtelte Objekte zu serialisieren/deserialisieren. Dieser Artikel zeigt zwei Ansätze, um dies zu erreichen: Typkonverter und JSON-Konverter.

Typkonverter

Das Hinzufügen eines Typkonverters speziell für die StringId-Klasse ermöglicht JSON.Net dies Konvertieren Sie es während der Serialisierung/Deserialisierung in/aus einer Zeichenfolge:

[TypeConverter(typeof(StringIdConverter))]
class StringId
{
    public string Value { get; set; }
}

class StringIdConverter : TypeConverter
{
    // ... (Implement CanConvertFrom, CanConvertTo, ConvertFrom, and ConvertTo)
}

JSON Konverter

Alternativ bieten JSON-Konverter mehr Kontrolle über den Konvertierungsprozess. Durch Anwenden eines benutzerdefinierten JSON-Konverters auf die StringId-Klasse kann die Serialisierungs- und Deserialisierungslogik explizit definiert werden:

[JsonConverter(typeof(StringIdConverter))]
class StringId
{
    public string Value { get; set; }
}

class StringIdConverter : JsonConverter
{
    // ... (Implement CanConvert, ReadJson, and WriteJson)
}

Globale Konverterkonfiguration

JSON-Konverter können ebenfalls sein global eingestellt. Um beispielsweise alle Eigenschaften vom Typ StringId als Werte zu behandeln:

JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
    Converters = { new StringIdConverter() }
};

Zusätzliche Überlegungen

  • In .Net Core erfordert die Typkonverterunterstützung JSON. Net 10.0.1 oder höher.
  • In portablen Builds von JSON.Net ist die Typkonverterunterstützung ab Version nicht verfügbar 10.0.3.
  • Bei der Arbeit mit numerischen oder Datums-/Uhrzeitdaten in der Zeichenfolgendarstellung ist es wichtig, die bereitgestellte Kultur zu verwenden, um die Portabilität zwischen Kulturen sicherzustellen.

Das obige ist der detaillierte Inhalt vonWie kann ich JSON.Net-Eigenschaften als Werte statt als Objekte serialisieren/deserialisieren?. 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