使用 jq 比较同一 json 中的两个字段并打印其他字段作为结果

sam*_*rth 7 json jq

我有以下格式的 json 数据

{
  "body": [
    {
      "username": "name1",
      "id": "4444"
    },
    {
      "username": "name2",
      "id": "5555"
    }
  ],
  "meta": {
    "input": "name1"
  }}
Run Code Online (Sandbox Code Playgroud)

给定这些数据,我想将正文中的“用户名”与“meta.input”进行匹配,以及是否存在匹配的返回/打印相关 ID。

Rom*_*est 10

jq解决方案:

jq '.meta.input as $meta | .body[] | select(.username == $meta).id' input.json
Run Code Online (Sandbox Code Playgroud)

输出:

"4444"
Run Code Online (Sandbox Code Playgroud)
  • .meta.input as $meta- 将.meta.input键值分配给$meta变量以进行进一步比较