JSON.NETシリアル化問題
質問のエクセリオン
json.netの
メソッドを使用すると、オブジェクトはデュアルによってシリアル化され、JSON応答エラーが発生します。応答は見積セッションに包まれ、埋め込まれた引用符も変換され、JSONが無効になりました。
JsonConvert.SerializeObject
root
この問題は、通常、WebAPIコントローラーからシリアル化されたJSON.NETを使用してシリアル化された文字列を返すときに発生します。その後、コントローラーは文字列をJavaScript文字列単語にシリアル化し、デュアルシリアル化につながります。
solution
この問題を解決するには、文字列ではなくオブジェクト自体を返します。このようにして、APIコントローラーはリクエストパラメーターに従ってシリアル化を処理し、json.netがオブジェクトを正しくシリアル化できるようにします。これにより、デュアルシリアル化が排除され、生成されたJSON応答が効果的であることが保証されます。
例
リターンタイプをシリアル化されたオブジェクトの実際のタイプとして更新することにより、コントローラーは結果を適切にシリアル化して、デュアルシーケーション化の問題を解決します。
情報を追加
WebAPIのシリアル化の詳細については、次のリソースを参照してください。
ASP.NET Web APIのJSONおよびXMLシリアル化
<code class="language-csharp">// 原代码:双重序列化
public string GetFoobars() {
var foobars = ...;
return JsonConvert.SerializeObject(foobars);
}
// 更新后的代码:直接返回对象
public IEnumerable<Foobar> GetFoobars() {
var foobars = ...;
return foobars;
}</code>
ログイン後にコピー
以上がJSON.NET シリアル化で二重エンコードされた JSON 文字列が生成されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。