11

说我有一个像

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"}。我希望创建一个像

var model = $.parseJSON('@jsonString');

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

var model = $.parseJSON('{"Testing":"check ' out"}');

失败是因为插入的撇号使parseJSON我的字符串过早转义。

JavascriptSerializer 默认将撇号编码为 \u0027 而 JSON.NET(我想使用)没有。我怎样才能改变 JSON.NET 来做到这一点?有没有我缺少的设置?有没有一种不同的方法可以将我的 JSON 字符串解析为 javascript,其中撇号是可以的?

4

3 回答 3

1

您是否尝试过用“\”转义撇号?

就像是Testing = "check \' out";


你也应该看看这篇文章,这里似乎有一些有趣的答案。

于 2013-04-12T09:21:57.613 回答
1

尝试这个:

{"Testing":"check \u0027 out"}
于 2013-09-10T10:02:02.137 回答
1

以下答案表明两者应该是等价的。 https://stackoverflow.com/a/5022386/1388165

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

于 2012-05-16T19:50:41.360 回答