Ошибка в System.Json?

#c# #json #mono

#c# #json #моно

Вопрос:

Код для воспроизведения:

 JsonPrimitive a = new JsonPrimitive("<a href=""/>");
//or the same: JsonPrimitive a = new JsonPrimitive(@"<a href=""/>");
Console.WriteLine(a.ToString());
//or Console.WriteLine((string)a);
//On the console screen I got:    "<a href=""/>"
//Ideal:   "<a href=""/>"
 

Версия моего System.Json.dll является ли 2.0.5.0. Это ошибка? И каково решение?

ОБНОВЛЕНИЕ от августа 2015 года: это ошибка, и она уже исправлена в MONO. Проверьте ссылку в моем ответе ниже.

Комментарии:

1. Ты хочешь сказать, что поступил <a href=""/> правильно?

2. @MarcinSeredynski: Это трудно объяснить. Вы можете запустить мой код и увидеть результат.

Ответ №1:

Оказалось, что это ошибка в системе сборки.Json из Mono. JsonValue.cs строки 218 и 219 в методе string DoEscapeString (StringBuilder sb, string src, int cur) .

Оригинал:

     sb.Append(src[i  ]);
    start = i;
 

Исправлено:

     sb.Append(src[i]);
    start = i   1;
 

отчитался перед командой mono.

Ответ №2:

Если вы хотите получить <a href=""/> в качестве вывода, используйте строковый параметр для конструктора следующим образом:

 @"<a href=""""/>"
 

или

 "<a href=\"\">"
 

и прочитайте http://msdn.microsoft.com/en-us/library/362314fe (v=VS.100).aspx