sh
1 json='[{"item_id":1,"name":"123"},{"item_id":2,"name":"234"},{"item_id":3,"name":"345"}]' 2echo $json | jq '[.[] | select(.name | contains("34"))][0]'
を実行すると
{
"item_id": 2,
"name": "234"
}
が出力されます。
これを、item_idで降順にソートしてから[0]番目を表示することにより
{
"item_id": 3,
"name": "345"
}
を表示したいと考えています。
sh
1json='[{"item_id":1,"name":"123"},{"item_id":2,"name":"234"},{"item_id":3,"name":"345"}]' 2echo \$json | jq '[.[] | select(.name | contains("34")) | sort_by(.item_id) | reverse][0]'
sort_byとreverseを用いこのように変更したところ、、
jq: error (at <stdin>:1): Cannot index number with string "item_id"
とエラーが出ました。
--slurpをつけると良いのかと思い、
sh
1 2json='[{"item_id":1,"name":"123"},{"item_id":2,"name":"234"},{"item_id":3,"name":"345"}]' 3echo \$json | jq --slurp '[.[] | select(.name | contains("34")) | sort_by(.item_id) | reverse][0]' 4
としてみましたが、今度は
jq: error (at <stdin>:1): Cannot index array with string "name"
とエラーが出てしまいました。
どのようにすれば想定通りの動きができるでしょうか?

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/28 15:19