2011-06-13 76 views
2

我正在編寫一個需要將JSON發佈到URL的Groovy腳本。我注意到一個問題是,我的JSON中包含'/'的所有元素都被JSON Builder更改爲'\ /'。有沒有辦法阻止它?爲什麼Groovy JSONBuilder會在URL中跳轉斜槓?

這是使用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

我想你一定是指的是grails中的一個類。似乎沒有任何由JorgeBuilder提供的Groovy http://groovy.codehaus.org/api/index.html – 2011-06-13 15:30:47

+0

@Don它[包含在1.8](http://groovy.codehaus.org/ gapi/groovy/json/JsonBuilder.html) – 2011-06-13 15:31:59

+0

@tim_yates - 我怎麼沒有看到它在1.8文檔(上面鏈接)中列出? – 2011-06-14 08:22:45

回答

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

爲什麼Groovy的JSONBuilder逃生URL中斜槓?

有關這一主題的提出http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/1642ec0bed9b95ba/21956eed23f04e13?pli=1有趣點的摘錄:

  • 阿恩Roomann-Kurrik:每JSON的規範,逃避 '/' 是可選的。

  • Mike Samuel:固體字是可以逃脫的字符集之一,因此將HTML中的JSON子字符串</script>嵌入爲<\/script>是安全的。 (這個報價的一半是Andrea Ercolino。)

  • Kevin Brown:這主要是由於錯誤的javascript解析器,當它在字符串中時,會將其視爲 。