我正在编写一个需要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"}}
由于
答案 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解析器将//视为评论 当它在一个字符串中时。