首页 > 解决方案 > 使用 jq 从 json 文件中获取键值对

问题描述

我正在尝试使用jq获取下面的 JSON 文件的key@value

{
  "STUFF_RELATED1": "STUFF_RELATED1",
  "STUFF_RELATED2": "STUFF_RELATED2",
  "THINGS": {
    "THING_2": {
      "details": {
        "stuff_branch": "user/dev"
      },
      "repository": "path/to/repo",
      "branch": "master",
      "revision": "dsfkes4s34jlis4jsj4lis4sli3"
    },
    "THING_1": {
      "details": {
        "stuff_branch": "master"
      },
      "repository": "path/to/repo",
      "branch": "master",
      "revision": "dsfkes4s34jlis4jsj4lis4sli3"
    }
  },
  "STUFF": {
    "revision": "4u324i324iy32g",
    "branch": "master"
  }
}

key@value对应如下所示:

THING_1@dsfkes4s34jlis4jsj4lis4sli3

目前我已经自己尝试过:

jq -r ' .THINGS | keys[] as $k | "($k)@(.[$k].revision)" ' things.json

但它并没有给出我真正想要的结果。:(提前谢谢!

标签: jsonjq

解决方案


你需要逃脱(

jq -r ' .THINGS | keys[] as $k | "\($k)@\(.[$k].revision)" ' things.json

推荐阅读