假设我有一个类如下所示:
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 \u0027 out"}。我希望创建一个类似于 JavaScript 对象的东西。var model = $.parseJSON('@jsonString');
但是,这仅在撇号被编码时才有效。否则,撇号会导致我的JavaScript代码出现错误。
var model = $.parseJSON('{"Testing":"check ' out"}');
由于插入的撇号使得parseJSON
过早地转义了我的字符串,因此它失败了。
JavascriptSerializer默认将撇号编码为\u0027,而JSON.NET(我想使用的)则没有这样做。我该如何更改JSON.NET才能实现这一点?我是否缺少设置?是否有其他方法可以将我的JSON字符串解析成JavaScript,其中包含的撇号是可以接受的?