2015-05-29 44 views
0

我正在使用httpbuilder爲API創建REST請求。從JSON到地圖的正確轉換是什麼?

唯一可以接受的JSON格式

{ 
"attributes" : [ 
    { 
    "name" : "attr-name", 
    "values" : [ 
     "attr-value" 
    ] 
    } 
] 
} 

這是公認的,併成功地郵差-RESTClient實現

t要其轉換映射是這樣的

[attributes:[name:attName,values:[value:value1]]] 

[attributes:[[name:attName,values:[value:value1]]]] 

我收到一個說明請求正文不正確的錯誤。

回答

0

如果您問的郵遞員API,我不能幫你。如果您問的是JSON代碼是否與您的Ruby代碼匹配,那麼不會,它們不匹配。

大括號{}標記哈希(鍵:值對)和大括號[]標記數組(無鍵的值列表)。

你有這樣的:

require 'json' 
m = [attributes:[name:"attName",values:[value:"value1"]]] 
print m.to_json() 

> [{"attributes":[{"name":"attName","values":[{"value":"value1"}]}]}] 

但是,你想這樣:

require 'json' 
m = {attributes:[{name:"attName",values:["1"]}]} 
print m.to_json() 

> {"attributes":[{"name":"attName","values":["1"]}]} 

經驗法則,它有一個關鍵?使用 {}。這是一個值列表嗎?使用[]

+0

使用你的答案我嘗試這樣的HashMap M = [屬性:[名稱: 「attName」,值:[ 「1」]]]] \t \t的println新JsonBuilder(M).toPrettyString( )昂得到了我所需要的。謝啦。歡呼 – johnguild

+0

這個問題與紅寶石有什麼共同之處? – Opal

+0

這與我誤解Grails作爲rails有關。除此之外,答案與一般的JSON格式有關。如果它困擾你,我可以編輯我的回覆。 – mbrandeis

相關問題