我需要运行以下groovy脚本来构建JSON模板。我遇到的问题是模板中的整数用引号引起来。从变量中删除引号会将其视为字符串。
cat port.txt
1001
这是我的JSON构建器脚本
def test = new groovy.json.JsonBuilder()
test {
ports new File('ports.txt').readLines()*.trim().collect { p ->
[name: "$p-tcp", protocol: "TCP", port: "$p", targetPort: "$p"]
}
}
println test.toPrettyString()
当我运行它时,它会吐出以下内容:
{
"ports": [
{
"name": "1001-tcp",
"protocol": "TCP",
"port": "1001",
"targetPort": "1001"
}
]
}
但是我希望它像这样去掉端口和targetPorts的引号
{
"ports": [
{
"name": "1001-tcp",
"protocol": "TCP",
"port": 1001,
"targetPort": 1001
}
]
}
任何有关如何实现此目标的线索都将受到赞赏。
答案 0 :(得分:1)
如果您希望ports.txt
文件始终只包含整数,则可以在收集读取行之前将其转换为整数。甚至没有修剪字符串。另外,请注意在p
蚂蚁port:
targetPort:
周围的引号
def test = new JsonBuilder()
test {
ports new File('ports.txt').readLines()*.toInteger().collect { p ->
[name: "$p-tcp", protocol: "TCP", port: p, targetPort: p]
}
}
println test.toPrettyString()
输出:
{
"ports": [
{
"name": "1001-tcp",
"protocol": "TCP",
"port": 1001,
"targetPort": 1001
}
]
}