用 JSON.NET 编码撇号



假设我有一个类似的类

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"}

最新更新