JSON 使用数组和非数组数据 Groovy JsonBuilder
JSON with array and non-array data with Groovy JsonBuilder
我需要在我的 Groovy 脚本中创建一个 JSON 字符串,其中一些元素是数组,一些不是。例如下面的..
{
"fleet": {
"admiral":"Preston",
"cruisers": [
{"shipName":"Enterprise"},
{"shipName":"Reliant"}
]
}
}
我找到了 this post,但答案要么没有意义,要么不适用于我的示例。
我在代码中尝试了以下...
def json = new groovy.json.JsonBuilder()
def fleetStr = json.fleet {
"admiral" "Preston"
cruisers {
{shipName: "[Enterprise]"}, {shipName: "[Reliant]"}
}
}
但它给出了一个例外...
Ambiguous expression could be either a parameterless closure expression or an isolated open code block
在Groovy中,{}
语法用于闭包。对于 JSON 中的对象,您要使用映射语法 [:]
,对于列表,列表语法 []
:
def json = new groovy.json.JsonBuilder()
def fleetStr = json.fleet {
"admiral" "Preston"
cruisers( [
[shipName : "[Enterprise]"],
[shipName: "[Reliant]"]
])
}
assert json.toString() ==
'{"fleet":{"admiral":"Preston","cruisers":[{"shipName":"[Enterprise]"},{"shipName":"[Reliant]"}]}}'
更新:根据您的后续行动,您需要在 "[Enterprise]"
和 "[Reliant]"
之外使用相同的列表语法 []
字符串:
def json = new groovy.json.JsonBuilder()
def fleetStr = json.fleet {
"admiral" "Preston"
cruisers( [
[shipName : ["Enterprise"]],
[shipName: ["Reliant"]]
])
}
assert json.toString() ==
'{"fleet":{"admiral":"Preston","cruisers":[{"shipName":["Enterprise"]},{"shipName":["Reliant"]}]}}'
我需要在我的 Groovy 脚本中创建一个 JSON 字符串,其中一些元素是数组,一些不是。例如下面的..
{
"fleet": {
"admiral":"Preston",
"cruisers": [
{"shipName":"Enterprise"},
{"shipName":"Reliant"}
]
}
}
我找到了 this post,但答案要么没有意义,要么不适用于我的示例。
我在代码中尝试了以下...
def json = new groovy.json.JsonBuilder()
def fleetStr = json.fleet {
"admiral" "Preston"
cruisers {
{shipName: "[Enterprise]"}, {shipName: "[Reliant]"}
}
}
但它给出了一个例外...
Ambiguous expression could be either a parameterless closure expression or an isolated open code block
在Groovy中,{}
语法用于闭包。对于 JSON 中的对象,您要使用映射语法 [:]
,对于列表,列表语法 []
:
def json = new groovy.json.JsonBuilder()
def fleetStr = json.fleet {
"admiral" "Preston"
cruisers( [
[shipName : "[Enterprise]"],
[shipName: "[Reliant]"]
])
}
assert json.toString() ==
'{"fleet":{"admiral":"Preston","cruisers":[{"shipName":"[Enterprise]"},{"shipName":"[Reliant]"}]}}'
更新:根据您的后续行动,您需要在 "[Enterprise]"
和 "[Reliant]"
之外使用相同的列表语法 []
字符串:
def json = new groovy.json.JsonBuilder()
def fleetStr = json.fleet {
"admiral" "Preston"
cruisers( [
[shipName : ["Enterprise"]],
[shipName: ["Reliant"]]
])
}
assert json.toString() ==
'{"fleet":{"admiral":"Preston","cruisers":[{"shipName":["Enterprise"]},{"shipName":["Reliant"]}]}}'