繁体   English   中英

使用 jq 嵌套 JSON 到 TSV 的可变键

[英]Nested JSON with variable keys to TSV using jq

我有以下嵌套的 JSON 文件labs.json带有变量关键字( lab001lab002等),我想使用jq将其转换为 TSV:

{
  "lab001": {
    "tags": {
      "T1": [],
      "T2": ["k26","e23"],
      "T3": ["s92"]
    },
    "code": "8231"
  },
  "lab002": {
    "tags": {
      "T1": ["t32","y55"],
      "T2": ["q78"],
      "T3": ["b24"]
    },
    "code": "9112"
  }
}

结果表应如下所示:

ID T1 T2 T3
实验室001 k26,e23 s92
实验室002 t32,y55 q78 b24

目前,我通过粘贴两个jq调用并使用tr进行一些清理来使用一种相当普通的方法:

paste <(jq -r 'keys_unsorted | @csv' labs.json | tr ',' '\n') <(jq -r '.[].tags | map(tostring) | @tsv' labs.json) | tr -d '[]"'

有没有更优雅的方法可以纯粹用jq完成这项工作?

用逗号连接每个标签的元素,将生成的字符串放入以实验室 ID 作为第一个元素的数组中,然后将@tsv过滤器,如下所示:

keys_unsorted[] as $id | [$id, (.[$id].tags[] | join(","))] | @tsv

在线演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM