使用JSON.NET编码撇号

use*_*487 11 jquery json.net razor asp.net-mvc-3

说我喜欢上课

public class MyTestClass
{
    public MyTestClass()
    {
        Testing = "check ' out";
    }
    public string Testing { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和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));
}
Run Code Online (Sandbox Code Playgroud)

然后在我看来

 @(Serializers.ToJsonNet(new MyTestClass()))
 @(Serializers.ToJson(new MyTestClass()))
Run Code Online (Sandbox Code Playgroud)

JsonNet将返回{"Testing":"check'out"},而JavascriptSerializer将返回{"Testing":"check\u0027 out"}.我希望创建一个像javascript这样的对象

var model = $.parseJSON('@jsonString');
Run Code Online (Sandbox Code Playgroud)

但这只有在撇号被编码时才有效.否则,撇号使我的javacript看起来像

var model = $.parseJSON('{"Testing":"check ' out"}');
Run Code Online (Sandbox Code Playgroud)

因为插入的撇号parseJSON过早地使我的字符串逃脱而失败了.

JavascriptSerializer默认将撇号编码为\ u0027,而JSON.NET(我想使用)却没有.如何更改JSON.NET来执行此操作?我缺少一个设置吗?有没有不同的方法我可以将我的JSON字符串解析为撇号正常的javascript?

小智 1

下面的答案表明两者应该是等价的。 /sf/answers/351567051/

如果是 parseJSON 调用失败,也许参数中的双引号而不是单引号会有所帮助。