如何在 jq 中传播对象的属性?

nac*_*cab 5 json key object jq

如果我需要访问对象的属性,我当前正在手动访问每个属性:

echo '{"a": {"a1":1, "a2": 2}, "b": 3}' | jq '{a1:.a.a1, a2: .a.a2,b}'
{
  "a1": 1,
  "a2": 2,
  "b": 3
}
Run Code Online (Sandbox Code Playgroud)

我想避免指定每个属性。JS 中是否有相当于对象扩展运算符的东西,例如jq '{...a, b}'

Wee*_*ble 8

您可以将对象添加在一起以组合它们的内容。如果左右对象中都存在某个键,则右侧对象的值将保留。

echo '{"a": {"a1":1, "a2": 2}, "b": 3}' | jq '.a+{b}'
{
  "a1": 1,
  "a2": 2,
  "b": 3
}
Run Code Online (Sandbox Code Playgroud)