net.sf.json.JSONObject добавляет обратную косую черту, где это не ожидается? - PullRequest
1 голос
/ 27 мая 2010

Я теряю голову, пытаясь понять, почему net.sf.json.JSONObject добавляет дополнительную обратную косую черту, чего не должно быть в моем коде Java:

JSONObject obj = new JSONObject ();
obj.element ("column_name", "<a href=\"#\" title=\"test\">Test !</a>");

выведет:

<a href=\"#\" title=\"test\">Test !<\/a>

с дополнительным "\" рядом .

Как мне избежать этого поведения?

Ответы [ 2 ]

2 голосов
/ 01 июня 2013

Я тоже столкнулся с этой проблемой. Оказывается, проблема в том, что мой код использовал как org.json.JSONObject, так и com.amazonaws.util.json.JSONObject Преобразование между ними создавало строки и экранирующие символы. Учитывая, что вы используете net.sf.json.JSONObject, это может быть и вашей проблемой. Проверьте импорт для других версий JSONObject.

2 голосов
/ 27 мая 2010

Он, вероятно, использует тот же метод для экранирования строк в JSON, что и строки JavaScript, используемые в блоках скрипта (<script ...> ... </script>), которые в соответствии с правилами синтаксиса HTML могут не включать последовательность символов </.

Это имеет какое-то значение для вас?Экранирование «случайных» символов не меняет смысла строковых литералов в JSON или JavaScript.Строковые литералы "/" и "\/" технически абсолютно идентичны:

if ("/" === "\/") alert("The same!");

РЕДАКТИРОВАТЬ: Кстати, грамматика JSON явно перечисляет косую черту (solidus) как символ, который можно экранировать.

...