在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

我需要运行下面的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
    }
]
}

如果您希望
ports.txt
文件始终只包含整数,那么您可以在收集之前将读取的行转换为整数。甚至不用修剪琴弦。另外,请注意
port:
ant
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
        }
    ]
}

可能是@NathanHughes的复制品你能告诉我怎么做吗?我仍然是groovy的初学者。将
端口:“$p”
更改为
端口:Integer.parseInt(p)
谢谢你。正是我想要的。