Heim >Backend-Entwicklung >C++ >Wie serialisiere ich JSON-Eigenschaften als Werte statt als Objekte?

Wie serialisiere ich JSON-Eigenschaften als Werte statt als Objekte?

DDD
DDDOriginal
2025-01-03 09:24:43851Durchsuche

How to Serialize JSON Properties as Values Instead of Objects?

JSON-Eigenschaften als Werte serialisieren

Bei der Verwendung von JSON-Darstellungen in Ihrem Code kann es vorkommen, dass Sie eine Eigenschaft als serialisieren möchten Wert und nicht Gegenstand. Dadurch soll ein prägnanteres und gewünschteres JSON-Format erreicht werden.

Betrachten wir das folgende Beispiel mit den Klassen Car und StringId:

class Car
{
    public StringId Id { get; set; }
    public string Name { get; set; }
}

class StringId
{
    public string Value { get; set; }
}

// Desired representation
{ "Id": "someId", "Name": "Ford" }

// Default (undesired) representation
{ "Id" : { "Value": "someId" }, "Name": "Ford" }

Die gewünschte JSON-Darstellung eliminiert das verschachtelte Objekt für Id und zeigt seinen Wert direkt an. Um dies zu erreichen, können wir zwei Ansätze anwenden:

Verwendung eines TypeConverters

Durch die Implementierung eines TypeConverters für StringId verwendet JSON.NET diesen automatisch zum Konvertieren der Eigenschaft eine Zeichenfolge:

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

class StringIdConverter : TypeConverter
{
    // Implementation omitted for brevity...
}

Mit a JsonConverter

Bei diesem Ansatz müssen Sie bestimmte JSON.NET-Attribute zu Ihrer StringId-Klasse hinzufügen:

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

class StringIdConverter : JsonConverter
{
    // Implementation omitted for brevity...
}

In beiden Fällen liest und schreibt der Konverter den Wert direkt, was zu … die gewünschte JSON-Darstellung:

{ "Id": "someId", "Name": "Ford" }

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