使用 jq 追加 JSON 个对象
Append JSON Objects using jq
我在 JSON
结构下面
{
"a": "aVal",
"x": {
"x1": "x1Val",
"x2": "x2Val"
}
"y": {
"y1": "y1Val"
}
}
我想将 "x3": "x3Val","x4": "x4Val"
添加到 x
。所以输出应该是
{
...
"x": {
....
"x3": "x3Val",
"x4": "x4Val",
}
...
}
是否可以使用 jq?
是的,前提是您在右括号 }
之后的第 8 行添加一个逗号(否则 jq
不会解析您输入的 JSON 数据):
$ jq '.x.x3="x3val"|.x.x4="x4val"' file
{
"a": "aVal",
"x": {
"x1": "x1Val",
"x2": "x2Val",
"x3": "x3val",
"x4": "x4val"
},
"y": {
"y1": "y1Val"
}
}
或者,如果您需要将值作为参数传递,请使用选项 --arg
:
jq --arg v3 "x3val" --arg v4 "x4val" '.x.x3=$v3|.x.x4=$v4' file
当然,jq
:
很简单
jq '.x += {"x3": "x3Val","x4": "x4Val"}' file.json
输出:
{
"a": "aVal",
"x": {
"x1": "x1Val",
"x2": "x2Val",
"x3": "x3Val",
"x4": "x4Val"
},
"y": {
"y1": "y1Val"
}
}
我在 JSON
结构下面
{
"a": "aVal",
"x": {
"x1": "x1Val",
"x2": "x2Val"
}
"y": {
"y1": "y1Val"
}
}
我想将 "x3": "x3Val","x4": "x4Val"
添加到 x
。所以输出应该是
{
...
"x": {
....
"x3": "x3Val",
"x4": "x4Val",
}
...
}
是否可以使用 jq?
是的,前提是您在右括号 }
之后的第 8 行添加一个逗号(否则 jq
不会解析您输入的 JSON 数据):
$ jq '.x.x3="x3val"|.x.x4="x4val"' file
{
"a": "aVal",
"x": {
"x1": "x1Val",
"x2": "x2Val",
"x3": "x3val",
"x4": "x4val"
},
"y": {
"y1": "y1Val"
}
}
或者,如果您需要将值作为参数传递,请使用选项 --arg
:
jq --arg v3 "x3val" --arg v4 "x4val" '.x.x3=$v3|.x.x4=$v4' file
当然,jq
:
jq '.x += {"x3": "x3Val","x4": "x4Val"}' file.json
输出:
{
"a": "aVal",
"x": {
"x1": "x1Val",
"x2": "x2Val",
"x3": "x3Val",
"x4": "x4Val"
},
"y": {
"y1": "y1Val"
}
}