假设我有一个类似的类
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 这样的 JavaScript 对象
var model = $.parseJSON('@jsonString');
但这仅在对撇号进行编码时才有效。否则,撇号使我的javacript看起来像
var model = $.parseJSON('{"Testing":"check ' out"}');
失败是因为插入的撇号使parseJSON
过早地逃离我的字符串。
默认情况下,JavascriptSerializer将撇号编码为\u0027,而 JSON.NET(我想使用)则不编码。如何更改 JSON.NET 执行此操作?我缺少某个设置吗?有没有其他方法可以将我的 JSON 字符串解析为 javascript,其中撇号是可以的?
以下答案表明两者应该是等效的。https://stackoverflow.com/a/5022386/1388165
如果是parseJSON调用失败,也许在参数中使用双引号而不是单引号会有所帮助。
您是否尝试过用"\"转义撇号?
类似Testing = "check ' out";
你也应该看看这篇文章,这里似乎有一些有趣的答案给你。
试试这个:
{"Testing":"check u0027 out"}