jq 一次设置多个显式属性

问题描述 投票:0回答:1

在一个非常简单的意义上,我想获取一个现有的 JSON 对象并使用

jq
为其添加/更新两个附加值。例如

开始 结果
{}
{"a": 1, "b":2}
{"a":42}
{"a": 1, "b":2}
{"a":"hello"}
{"a": 1, "b":2}
{"b":"qwerty"}
{"a": 1, "b":2}

我可以使用两个背靠背命令来设置

a
b
,如下所示
echo {} | jq '.a=1' | jq '.b=2'
。但我想知道是否有一种方法可以只进行一次
jq
调用来完成这两项操作?

json jq
1个回答
0
投票

是的——您可以在单个表达式中用逗号分隔多个字段分配

echo {} | jq '.a = 1, .b = 2'

采用空 JSON,设置

a
b
。无论输入如何,jq 都会覆盖这些值(如果存在)。

  1. 从空开始
echo {} | jq '.a = 1, .b = 2'
# Output: {"a":1,"b":2}
  1. {"a":42}
    开始:
echo '{"a":42}' | jq '.a = 1, .b = 2'
# Output: {"a":1,"b":2}
  1. {"a":"hello"}
  2. 开始
echo '{"a":"hello"}' | jq '.a = 1, .b = 2'
# Output: {"a":1,"b":2}
© www.soinside.com 2019 - 2024. All rights reserved.