需要帮助将对象数组简化为一个总和

uda*_*486 5 shell jq

在shell脚本中,我有下面的对象数组:

response={
        "product": "BIG MAC",
        "objects": [
                        {
                            "qty": 10,
                            "size": 32
                        },
                        {
                            "qty": 20,
                            "size": 53
                        },
                        {
                            "qty": 10,
                            "size": 54
                        }
        ]
    }
Run Code Online (Sandbox Code Playgroud)

我正在写一个jq函数来获取总量。

data=$( echo $response | jq '.objects[] | .qty ' )
Run Code Online (Sandbox Code Playgroud)

这给了我一行数量,例如

10 20 10
Run Code Online (Sandbox Code Playgroud)

我如何总结这些来获得价值:

40
Run Code Online (Sandbox Code Playgroud)

che*_*ner 5

创建一个数组并将其通过管道传输add

jq '[.objects[] | .qty] | add'
Run Code Online (Sandbox Code Playgroud)

使用map可能会使这更简单,因为您不必先“索引” .objects

jq '.objects | map(.qty) | add'
Run Code Online (Sandbox Code Playgroud)