在JSON Builder中从整数中去除引号

时间:2019-01-30 02:09:00

标签: 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: "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
    }
]
}

任何有关如何实现此目标的线索都将受到赞赏。

1 个答案:

答案 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
        }
    ]
}