Json.NET - Erneutes Serialisieren einer bereits serialisierten Eigenschaft verhindern [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Newtonsoft Json serialisiert eine Klasse, in der eine der Eigenschaften JSON [duplicate] ist 2 Antworten

In einer ASP.NET-Web-API-Anwendung enthalten einige der Modelle, mit denen ich arbeite, einen Teil von Ad-hoc-JSON, der nur auf der Clientseite nützlich ist. Auf dem Server wird eine relationale Datenbank einfach als Zeichenfolge ein- und ausgeblendet. Leistung ist der Schlüssel und es scheint sinnlos, die JSON-String-Server-Seite überhaupt zu verarbeiten.

So stellen Sie sich in C # ein Objekt wie das folgende vor:

new Person
{
    FirstName = "John",
    LastName = "Smith",
    Json = "{ \"Age\": 30 }"
};

Standardmäßig serialisiert Json.NET dieses Objekt folgendermaßen:

{
    "FirstName": "John",
    "LastName": "Smith",
    "Json": "{ \"Age\": 30 }"
}

Ich möchte Json.NET anweisen können, anzunehmen, dass dasJsonie Eigenschaft @ ist bereits eine serialisierte Darstellung, daher sollte sie nicht erneut serialisiert werden, und der resultierende JSON sollte folgendermaßen aussehen:

{
    "FirstName": "John",
    "LastName": "Smith",
    "Json": {
        "Age": 30
    }
}

Idealerweise funktioniert dies in beide Richtungen, d. H., Wenn die JSON-Darstellung veröffentlicht wird, wird sie automatisch in die obige C # -Darstellung deserialisiert.

Was ist der beste Mechanismus, um dies mit Json.NET zu erreichen Brauche ich ein benutzerdefiniertesJsonConverter? Gibt es einen einfacheren attributbasierten Mechanismus? Effizienz ist wichtig; Der springende Punkt ist, den Serialisierungs-Overhead zu überspringen, derkönnte ein bisschen wie eine Mikrooptimierung sein, aber um der Argumentation willen nehmen wir an, dass es nicht so ist. (Es wird möglicherweise große Listen mit sperrigem @ gebeJson Eigenschaften werden zurückgegeben.)

Antworten auf die Frage(6)

Ihre Antwort auf die Frage