Скажем, у меня есть класс вроде
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, где апостроф в порядке?