gpt4 book ai didi

json - jq:删除具有空字符串值的键

转载 作者:行者123 更新时间:2023-12-05 02:50:33 26 4
gpt4 key购买 nike

我有以下 JSON:

{
"data": [
{
"{#NAME}": "Test 1",
"{#ID}": "1",
"{#IP}": "192.168.1.2:80"
},
{
"{#NAME}": "Test 2",
"{#ID}": "2",
"{#IP}": ""
},
{
"{#NAME}": "Test 3",
"{#ID}": "3",
"{#IP}": "192.168.1.3:80"
},
{
"{#NAME}": "Test 4",
"{#ID}": "4",
"{#IP}": "192.168.1.4:80"
},
{
"{#NAME}": "Test 5",
"{#ID}": "5",
"{#IP}": ""
}
]
}

但我想返回:

{
"data": [
{
"{#NAME}": "Test 1",
"{#ID}": "1",
"{#IP}": "192.168.1.2"
},
{
"{#NAME}": "Test 2",
"{#ID}": "2",
},
{
"{#NAME}": "Test 3",
"{#ID}": "3",
"{#IP}": "192.168.1.3"
},
{
"{#NAME}": "Test 4",
"{#ID}": "4",
"{#IP}": "192.168.1.4"
},
{
"{#NAME}": "Test 5",
"{#ID}": "5",
}
]
}

我对使用 JQ 还很陌生,不确定我该怎么做。我通读了这个 issue page on GitHub但是这些例子似乎都不适合我。

我还需要删除端口号和冒号。这可能吗?

最佳答案

您可以在下面执行操作,使用 with_entries(expr) 选择非empty 的值,expr 是排除的条件空字段。

同样再次使用 .value 字段来删除与包含端口字符串的正则表达式相匹配的字符串。

jq '.data |= map(with_entries(select(.value != "") | .value |= sub(":[0-9][0-9]$"; "")))'

jqplay - Online demo

关于json - jq:删除具有空字符串值的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63635682/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com