如何 return 子节点和父节点属性在同一个查询 JMES Path for JSON object

How to return a child node and a parent node attribute in the same query JMES Path for JSON object

考虑一下我们有这个 JSON:

{  
   "A":[  
      {  
         "AT":"text"
      },
      {  
         "AT":"text2"
      }
   ],
   "B":[  
      {  
         "name":"text",
         "power":10
      },
      {  
         "name":"text1",
         "power":20
      },
      {  
         "name":"text2",
         "power":40
      }
   ]
}

我想要return"AT"和"AT"对应的幂,所以我不想return"text1"只是[["text",10],["text2",40]]。此查询 [A[*].AT,B[*].power] return 此:[["text","text2"],[10,20,40]]。所以这不是我想要的,因为我不想要额外的值:"text1" 中的 20。我该如何解决?

编辑:我发现这部分代码 @.B[?contains(['text','text2'],name)].[name,power][][] 它 return ["text",10,"text2",40] 这是很好的结果,但查询不是动态的,因为在包含我有这个 [ 'text','text2'] 如果可能的话,我想用嵌套查询替换这部分代码,那么,我该怎么做呢?

我认为这是不可能的,因为据我所知,我们不能在 JMES 路径广告中存储变量,我们不能在数组过滤器中使用 current-node(@) 作为 @.B[?contains(@[].A[].AT,name)].[name,power][][]。显然 JMES Path 不知道一旦它进入节点 B 就从节点 A 检索信息。你应该使用 jq,这个查询:

( .B | map({(.name): .power}) | add ) as $b | .A | map(.AT | [., $b[.]]) | add