Кодирование апострофа с помощью 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 вернет { "Тестирование": "check out" }, в то время как JavascriptSerializer вернет { "Тестирование": "check\u0027 out" }. Я хочу создать объект javascript, например

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

Но это работает только в том случае, если апостроф закодирован. В противном случае апостроф делает мой javacript похожим на

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

который терпит неудачу, потому что вставленный апостроф делает parseJSON слишком рано убирать мою строку.

JavascriptSerializer кодирует апостроф как \u0027 по умолчанию, в то время как JSON.NET(который я хочу использовать) не делает. Как я могу изменить JSON.NET для этого? Есть ли настройка, которой я не хватает? Есть ли другой способ, которым я могу проанализировать строку JSON в javascript, где апостроф в порядке?

Ответ 1

Следующий ответ указывает, что эти два должны быть эквивалентными. fooobar.com/questions/480081/...

Если это вызвано вызовом parseJSON, возможно, использование двойных кавычек вместо одиночных кавычек в аргументе.

Ответ 2

Вы пытались избежать апострофа с помощью "\"?

Что-то вроде Testing = "check \' out";


Вы также должны взглянуть на этот пост, для вас здесь есть интересные ответы.

Ответ 3

Попробуйте следующее:

{"Testing":"check \u0027 out"}