C # StringBuilder с кавычками (forJSON) - PullRequest
1 голос
/ 07 декабря 2010

Я создал строку JSON (для публикации в веб-сервисе), и для этого я использовал класс C # StringBuilder.Проблема в том, что когда я вставляю кавычки, класс StringBuilder избегает их.

В настоящее время я строю строку JSON следующим образом:

StringBuilder dataJSON= new StringBuilder();
dataJSON.Append("{");
dataJSON.Append("  " + Convert.ToChar(34) + "data" + Convert.ToChar(34) + ": {");
dataJSON.Append("  " + Convert.ToChar(34) + "urls" + Convert.ToChar(34) + ": [");
dataJSON.Append("  {" + Convert.ToChar(34) + "url" + Convert.ToChar(34) + ": " + Convert.ToChar(34) + domain + "/" + path[0] + Convert.ToChar(34) + "}");
dataJSON.Append("  ,{" + Convert.ToChar(34) + "url" + Convert.ToChar(34) + ": " + Convert.ToChar(34) + domain + "/" + path[1] + Convert.ToChar(34) + "}");
dataJSON.Append("  ]");
dataJSON.Append("  }");
dataJSON.Append("}");

Однако команда: dataJSON.ToString(); приводитв строке:

{  \"data\": {  \"urls\": [  {\"url\": \"domain/test1.html\"}  , {\"url\": \"domain/test2.html\"}  ]  }}

Обратите внимание на экранированные кавычки?Это действительно меня обескураживает, потому что сервер не может обработать косые черты.

Мое желаемое (что хорошо отправляется на мой сервер, когда я использую PHP) должно быть:

{  "data": {  "urls": [  {"url": "domain/test1.html"}  , {"url": "domain/test2.html"}  ]  }}

Есть ли ЛЮБОЙ способ получить строку в C #, чтобы включить кавычки, которые приведут к желаемой строке?

Большое спасибо!Brett

Ответы [ 2 ]

5 голосов
/ 07 декабря 2010

Окно QuickWatch / Watch добавит дополнительные \ дюйма. Если вы просматриваете его в Текстовом визуализаторе, вы их не увидите:

QuickWatch:

"{  \"data\": {  \"urls\": [  {\"url\": \"domain/path1\"}  ,{\"url\": 
    \"domain/path2\"}  ]  }}"

Визуализатор (фактический вывод):

{  "data": {  "urls": [  {"url": "domain/path1"}  ,{"url": "domain/path2"}  ]  }}

\ указывает, что кавычки были экранированы и будут включены в окончательную строку, как вы ожидаете. То есть с вашим выводом ничего плохого .

NB. Я использовал "\"" вместо Convert.ToChar(34) при тестировании.

3 голосов
/ 07 декабря 2010

Возможно, вам повезет больше, если использовать библиотеку Newtonsoft.JSON , или, альтернативно, просто экранировать косые черты как \ "в строковых литералах вместо использования Char (34).

dataJSON.Append(" \"data\": {");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...