几个小时以来,我一直在尝试使用 jsonBuilder 创建对象映射,但没有成功。我想做的是创建这样的json,这样我就可以像这样处理我的对象:someJsonObject.elements.2。所需的 JSON 看起来像这样(这是完全正确的语法):
{
"elements": {
"1": {
"id": 1,
"x": 111
},
"2": {
"id": 2,
"x": 222
},
"3": {
"id": 3,
"x": 333
}
}
}
到目前为止,我用这段代码得到了最好的结果:
builder.elements() {
elementList.each { Element e ->
element( id : e.id, x : e.x )
println "dodano"
}
}
但我得到的只是在我的 json 中打印的一个元素:
{
"elements": {
"element": {
"id": 3,
"x": 333
}
}
}
如果我只能动态命名我的对象,例如这样:
builder.elements() {
elementList.each { Element e ->
e.id( id : e.id, x : e.x )
println "dodano"
}
}
但它给了我一个错误:没有方法签名:com.webwaver.website.Element.id() 适用于参数类型:(java.util.LinkedHashMap) 值:[[id:3, x:748]]
有谁知道如何获得所需的json?
编辑:谢谢你的回答。这很有帮助,但是由于我不能使用方法调用 builder.elements() 我仍然在创建 json 时遇到问题,看起来像这样:
{
"data": {
"lastPageNr": 1,
"lastLanguageId": 1,
"lastElementNr": 0,
"websiteId": "nrpntf"
},
"elements": {
"1": {
"id": 1,
"x": 111
},
"2": {
"id": 2,
"x": 222
},
"3": {
"id": 3,
"x": 333
}
}
}
有任何想法吗?