在以下 json 文件中,
{
"contacts": [
{
"name": "John",
"phone": "1234"
},
{
"name": "Jane",
"phone": "5678"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我需要根据姓名更新两个电话号码,并将整个 json 存储在一个新文件中。
我尝试过类似的东西:
jq '.contacts[] | select(.name == "John") | .phone = "4321"' < contacts.json >updated_contacts.json
Run Code Online (Sandbox Code Playgroud)
但随后我不知道如何返回父节点并更改 Jane 的节点,也不知道如何检索整个 json。
我尝试使用 存储到变量中的根节点as
,但它保持不变。
作为临时解决方法,我只是这样做:
jq '.contacts[0].number = "4321" | .contacts[1].number = "4321"' < contacts.json >updated_contacts.json
Run Code Online (Sandbox Code Playgroud)
但我不应该依赖数组索引,而应该依赖名称,因为原始 json 可能会改变。
知道如何使用 jq 命令来做到这一点吗?
jq ×1