说我有一个像
这样的课程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');
但这仅在撇号被编码时才有效。否则,撇号使我的javacript看起来像
var model = $.parseJSON('{"Testing":"check ' out"}');
失败,因为插入的撇号让parseJSON
过早地逃脱了我的字符串。
JavascriptSerializer默认将撇号编码为\ u0027,而JSON.NET(我想使用)却没有。如何更改JSON.NET来执行此操作?我缺少一个设置吗?有没有不同的方法我可以将我的JSON字符串解析为javascript,撇号是否正常?
答案 0 :(得分:1)
以下答案表明两者应该是等价的。 https://stackoverflow.com/a/5022386/1388165
如果是parseJSON调用失败,那么参数中的双引号而不是单引号会有所帮助。
答案 1 :(得分:1)
答案 2 :(得分:1)
试试这个:
{"Testing":"check \u0027 out"}