为什么Groovy JSONBuilder会在URL中转义斜杠?

时间:2011-06-13 15:07:34

标签: json groovy

我正在编写一个需要POST JSON到URL的Groovy脚本。我注意到一个问题,我的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 个答案:

答案 0 :(得分:2)

只是看看,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 :(得分:1)

  

为什么Groovy JSONBuilder会在URL中转义斜杠?

http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/1642ec0bed9b95ba/21956eed23f04e13?pli=1关于这个主题的有趣观点的摘录:

  • Arne Roomann-Kurrik:根据JSON规范,转义'/'是可选的。

  • Mike Samuel:solidus是可以转义的字符集之一,因此可以安全地将JSON子字符串</script>嵌入HTML <\/script>。 (此引用的一半是Andrea Ercolino。)

  • Kevin Brown:这主要是因为错误的javascript解析器将//视为评论 当它在一个字符串中时。

相关问题