2015-05-29 21 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

相关问题