JQ从相关键搜索的键中拉取值

JQ pull value from key searched by related key

我 bash 把我的头靠在墙上 - 目标是从相关

搜索的键中提取值

JSON 片段

{
  "block": {
    "000545342981": [
      {
        "CODE": "xdxd3456532fok234sss0"
      },
      {
        "STATE": "COMPLETE"
      }
    ],
   "000545341211": [
      {
        "CODE": "xdff3678223frt244swe4"
      },
      {
        "STATE": "RUNNING"
      }
    ]
}}

我希望检索每个帐户的 CODE

000545342981 我希望 xdxd3456532fok234sss0 返回并且 xdff3678223frt244swe4 对于 000545341211

然后放在bash中作为

accounts+=(
["000545342981"]=xdxd3456532fok234sss0
["000545341211"]=xdff3678223frt244swe4
)

到目前为止 我已经退回了账户 jq --slurp '.?|.[][]|keys' | jq -r '.[]'

然后我尝试了 jq --arg code "ACCOUNT" 'select ( ."block".key==$code) | ."block".$stack."CODE"' ----> 没有错误 :/ 所以怀疑它可能找不到任何东西

这会有点用 ."block"."000545341211"[]."CODE" 但我知道我不能在 jq 中为每个输入一个 var,所以需要 arg 输入(除非我错了) 我认为是 select ( ."block".key==$code)?我需要什么:(

如果每个账户只包含一个代码,您可以这样做:

#!/usr/bin/env bash

declare -A accounts
while read account code; do
    accounts[$account]=$code
done < <(jq -r '.block       |
                to_entries[] |
                "\(.key) \(.value[0].CODE)"' input.json)
declare -p accounts