Heim >Backend-Entwicklung >C++ >Warum serialisiert JSON.NET meine Objekte doppelt?

Warum serialisiert JSON.NET meine Objekte doppelt?

DDD
DDDOriginal
2025-01-24 22:18:17518Durchsuche

Why is JSON.NET Double Serializing My Objects?

Problem mit der doppelten Serialisierung von JSON.NET

Wenn Sie JSON.NET zum Serialisieren von Objekten verwenden, kann ein seltsames Problem auftreten: Das Objekt ist doppelt serialisiert. Dadurch werden die JSON-Daten in der Antwort in doppelte Anführungszeichen gesetzt und eingebettete Anführungszeichen werden maskiert.

Grundursache

Die Wurzel des Problems liegt in der Serialisierungsmethode. Wenn Sie JsonConvert.SerializeObject(instance) wie im Beispiel verwenden, wird das Objekt zweimal serialisiert. Dies liegt daran, dass Sie es zuerst in einen String serialisieren und der API-Controller es dann weiter in ein JavaScript-String-Literal serialisiert.

Lösung

Um dies zu beheben, geben Sie das Objekt einfach direkt zurück:

<code class="language-csharp">public IEnumerable<foobar> GetFoobars()
{
    var foobars = ...;
    return foobars;
}</code>

Alternative Methoden

Alternativ können Sie einen benutzerdefinierten Konverter direkt zum Standard HttpConfiguration der Web-API hinzufügen:

<code class="language-csharp">config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new FooConverter());
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new BarConverter());</code>

Weitere Tipps

  • Stellen Sie sicher, dass benutzerdefinierte Konverter korrekt implementiert sind.
  • Erwägen Sie die Verwendung eines benutzerdefinierten JSON-Formatierers, anstatt die Standardeinstellungen zu ändern.
  • Weitere Anleitungen finden Sie unter „JSON- und XML-Serialisierung in der ASP.NET-Web-API“.

Das obige ist der detaillierte Inhalt vonWarum serialisiert JSON.NET meine Objekte doppelt?. 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