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 AntwortenIn 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 dasJson
ie 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.)