私のようなクラスがあるとしましょう
public class MyTestClass
{
public MyTestClass()
{
Testing = "check ' out";
}
public string Testing { get; set; }
}
そして、JavascriptSerializer / JsonNetシリアライザーは次のようになります:
public IHtmlString ToJsonNet(object value)
{
return new MvcHtmlString(JsonConvert.SerializeObject(value));
}
public IHtmlString ToJson(object value)
{
var json = new JavaScriptSerializer();
return new MvcHtmlString(json.Serialize(value));
}
それから私が持っているビューで
@(Serializers.ToJsonNet(new MyTestClass()))
@(Serializers.ToJson(new MyTestClass()))
JsonNetは{"Testing": "check'out"}を返し、JavascriptSerializerは{"Testing": "check \u0027out"}を返します。次のようなJavaScriptオブジェクトを作成したい
var model = $.parseJSON('@jsonString');
ただし、これはアポストロフィがエンコードされている場合にのみ機能します。それ以外の場合、アポストロフィは私のjavacriptを次のように見せます
var model = $.parseJSON('{"Testing":"check ' out"}');
parseJSON
挿入されたアポストロフィにより、文字列のエスケープが早すぎるため、失敗します。
JavascriptSerializerは、デフォルトでアポストロフィを\ u0027としてエンコードしますが、JSON.NET(使用したい)はエンコードしません。これを行うためにJSON.NETを変更するにはどうすればよいですか?足りない設定はありますか?JSON文字列をアポストロフィでOKなJavaScriptに解析する別の方法はありますか?