Web API での JSON.NET による二重シリアル化のトラブルシューティング
Web API 開発における一般的な問題には、JSON.NET がオブジェクトを予期せず 2 回シリアル化することが関係します。これは、JsonConvert.SerializeObject(instance)
内の JsonConvert.DefaultSettings
で定義されたカスタム コンバーターと一緒に WebApiConfig
を使用する場合によく発生します。結果は、内部引用符がエスケープされた二重引用符で囲まれた JSON 応答です。
解決策は簡単です。JsonConvert.SerializeObject
を使用してオブジェクトを手動でシリアル化することは避けてください。代わりに、Web API コントローラーにシリアル化プロセスを処理させます。 オブジェクトを直接返すだけです:
<code class="language-csharp">public IEnumerable<foobar> GetFoobars() { var foobars = ...; return foobars; }</code>
明示的なシリアル化を行わずに foobar
オブジェクトを返すことにより、Web API コントローラーはデフォルト設定を使用して、クライアントのリクエストに応じてデータを JSON または XML にシリアル化します。これにより、二重シリアル化の問題が解消されます。
その他のリソース:
以上がjson.netがWeb APIで私のオブジェクトを2回シリアル化するのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。