我有一个对象列表,并且希望当键为
.
时使用 :
将所有出现的
Name
替换为
jq
输入:
{
"Parameters": [
{
"Name": "TEST.AB.SOMETHING",
"Value": "hvfuycsgvfiwbiwbibibewfiwbcfwifcbwibcibc"
},
{
"Name": "TEST_GF_USER",
"Value": "ssssecret"
}
]
}
预期输出:
{
"Parameters": [
{
"Name": "TEST:AB:SOMETHING",
"Value": "hvfuycsgvfiwbiwbibibewfiwbcfwifcbwibcibc"
},
{
"Name": "TEST_GF_USER",
"Value": "ssssecret"
}
]
}
诀窍是使用
.Name |= gsub("\\.";":")
。就您而言(平面列表),这很简单。如果你想修改任意 JSON 文本中所有对象的键,最简单的方法是使用 walk/1
:
walk( if type == "object" and (.Name|type) == "string" then .Name |= gsub("\\.";":")) else . end )
(如果你的 jq 没有 walk/1,那么它的 jq 定义很容易通过谷歌搜索找到。)