Heim >Backend-Entwicklung >C++ >Warum serialisiert JSON.NET meine Objekte doppelt?
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
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!