在JSON生成器中从整数中去掉引号
我需要运行下面的groovy脚本来构建JSON模板。我遇到的问题是,模板中的整数用引号括起来。从变量中去掉引号将其视为字符串在JSON生成器中从整数中去掉引号,json,groovy,jsonbuilder,Json,Groovy,Jsonbuilder,我需要运行下面的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
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
}
]
}
如果您希望
ports.txt
文件始终只包含整数,那么您可以在收集之前将读取的行转换为整数。甚至不用修剪琴弦。另外,请注意port:
anttargetPort:
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
}
]
}
可能是@NathanHughes的复制品你能告诉我怎么做吗?我仍然是groovy的初学者。将
端口:“$p”
更改为端口:Integer.parseInt(p)
谢谢你。正是我想要的。