Почему Groovy JSONBuilder избегает слэшей в URL? - PullRequest
2 голосов
/ 13 июня 2011

Я пишу сценарий Groovy, который должен поместить JSON в URL-адрес.Я заметил проблему, когда все элементы в моем JSON, которые содержат «/», были изменены на «\ /» JSON Builder.Есть ли способ остановить это?

Это использует Groovy 1.8.Вот простой пример и его вывод:

def json = new JsonBuilder()
    json.reply {
    result 'http://google.ie/testing'
}

println json.toString()

Output -> {"reply":{"result":"http:\/\/google.ie\/testing"}}

Спасибо

Ответы [ 2 ]

2 голосов
/ 13 июня 2011

Только что посмотрел, и groovy.json.JsonOuput.toJson(string) кодирует косую черту как '\\/'.

Вы можете использовать toPrettyString, но это не так:

def json = new groovy.json.JsonBuilder()

json.reply {
  result 'http://google.ie/testing'
}

assert json.toPrettyString() == '''{
    "reply": {
        "result": "http://google.ie/testing"
    }
}'''
1 голос
/ 14 июня 2011

Почему Groovy JSONBuilder экранирует косые черты в URL?

Выдержка из интересных моментов, сделанных в http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/1642ec0bed9b95ba/21956eed23f04e13?pli=1 по этой теме:

  • Арне Руманн-Куррик: Согласно спецификации JSON, экранирование '/' необязательно.

  • Майк Самуэль: Солидус входит в число символов, которые МОГУТ экранироваться, поэтомучто встраивать JSON-подстроку </script> в HTML безопасно как <\/script>.(Половина этой цитаты написана Андреа Эрколино .)

  • Кевин Браун: Это в первую очередь связано с ошибочными анализаторами JavaScript, которые обрабатываются // как комментарий, когда он находится встрока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...