几个小时以来,我一直在尝试用jsonBuilder创建对象的映射,但都没有成功。我想要做的是创建这样的json,这样我就可以像这样访问我的对象: can JsonObject.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
}
}
}有什么想法吗?
发布于 2013-02-22 19:41:39
这将为您提供所需的输出:
import groovy.json.*
def builder = new JsonBuilder()
builder.elements {
"1" {
id 1
x 111
}
"2" {
id 2
x 222
}
"3" {
id 2
x 222
}
}
println builder.toPrettyString()所以你想要的基于列表的构建器是这样的:
def elementList = [ [ id: 3, x:748 ], [ id: 4, x:222 ] ]
def builder = new JsonBuilder()
builder.elements {
elementList.each { e ->
"$e.id" {
id e.id
x e.x
}
}
}
println builder.toPrettyString()编辑--更改问题后:
def builder = new JsonBuilder()
builder {
data {
lastPageNr 1
lastLanguageId 1
lastElementNr 0
websiteId 'nrpntf'
}
elements {
elementList.each { e ->
"$e.id" {
id e.id
x e.x
}
}
}
}
println builder.toPrettyString()https://stackoverflow.com/questions/15022995
复制相似问题