Jquery 使用JSON.NET对撇号进行编码
比如说我有一门课Jquery 使用JSON.NET对撇号进行编码,jquery,asp.net-mvc-3,razor,json.net,Jquery,Asp.net Mvc 3,Razor,Json.net,比如说我有一门课 public class MyTestClass { public MyTestClass() { Testing = "check ' out"; } public string Testing { get; set; } } 和JavascriptSerializer/JsonNet序列化程序,如: public IHtmlString ToJsonNet(object value) { return new Mvc
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,其中撇号是OK的?下面的答案表明两者应该是等价的。
如果parseJSON调用失败,那么参数中的双引号而不是单引号可能会有所帮助。您是否尝试过用“\”转义撇号 类似于
Testing=“check\'out”代码>
你们也应该看看这篇文章,这里似乎有一些有趣的答案 试试这个:
因为jsonstring包含双引号和单引号,在parseJson中使用它们中的任何一个都会导致失败,因为它很早就逃逸了jsonString。您使用的是哪个版本的jquery?您能用JSON.NET解决这个问题吗?当我从Microsoft Word将文本粘贴到html文本区域,然后使用该值在C#中序列化它时,撇号不会序列化为\u0027,而是保留为“'”字符。有什么想法吗?
{"Testing":"check \u0027 out"}