私は、C# と Razor ビュー エンジンの大規模な MVC 3 Web アプリケーションのシリアライザーとして JSON.Net を使用しています。1 つのビューでの最初のページの読み込みでは、を使用してスクリプト タグ内に大量の JSON がダンプされます@Html.Raw(JsonConvert.SerializeObject(myObject))
。
問題は、一部のオブジェクトの一部の数値にアポストロフィが含まれていることです (O'Brien などの名前を考えてください)。JSON.Net では、これをエスケープしたりエンコードしたりすることはありません。
データベースに保存されている値を事前にエンコードすることは、他のさまざまなプロセスを大幅に複雑にするため、選択肢にはなりません。
組み込みの JavaScriptSerializer が を呼び出すときに行うのと同じ方法で、JSON.Net にシリアル化するオブジェクトの値を HTML エンコードするように強制する方法はありますかJavaScriptSerializer.Serialize(myObject)
? または、ビューでこれを処理する方法はありますか?
ベストアンサー1
JsonSerializerSettings settings = new JsonSerializerSettings
{
StringEscapeHandling = StringEscapeHandling.EscapeHtml
};
JsonConvert.SerializeObject(obj, settings);