小编Ken*_*Ken的帖子

从 JQ 中的外部文件查找 ID

我有一个查找文件,将 ID 从一个系统映射到另一个系统:

[
  {
    "idA": 2547,
    "idB": "5d0bf91d191c6554d14572a6"
  },
  {
    "idA": 2549,
    "idB": "5b0473f93d4e53db19f8c249"
  },
  {
    "idA": 2550,
    "idB": "5d0bfabc8f20917b92ff07dc"
  },
...
Run Code Online (Sandbox Code Playgroud)

我有一个数据文件,其中包含来自以下系统之一的值和 ID:

[
  {
    "idB": "5d0bf91d191c6554d14572a6",
    "description": "Description for 5d0bf91d191c6554d14572a6"
  },
  {
    "idB": "5d0bf49e9236c57281811cfc",
    "description": "Description for 5d0bf49e9236c57281811cfc"
  },
  {
    "idB": "5d0bfabc8f20917b92ff07dc",
    "description": "Description for 5d0bfabc8f20917b92ff07dc"
  },
...
Run Code Online (Sandbox Code Playgroud)

我想生成一个新的描述文件,并将其 ID 转换为idA查找文件中的值。我试过这个:

jq --slurpfile idmap ids.json 'map( {"description":.description, "id": (.idB as $b|$idmap[][]|select(.idB==$b)|.idA) } )' descriptions.json
Run Code Online (Sandbox Code Playgroud)

但它只产生一个空数组。

我必须双重取消引用,$idmap因为slurping一个文件“将解析的JSON值的数组绑定到给定的全局变量”——所以这样做$idmap[]会抛出一个错误,jq:错误(在descriptions.json:70):无法索引数组字符串“idB”

谁能解释我在这里做错了什么?

json jq

5
推荐指数
1
解决办法
729
查看次数

标签 统计

jq ×1

json ×1