JQ:映射不同长度的字段数组 [英] jq: map field array with different length

查看:18
本文介绍了JQ:映射不同长度的字段数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用这些JSON:

{
  "extension": [
    {
      "url": "url1",
      "system": "system1"
    },
    {
      "url": "url2",
      "system": "system2"
    }
  ]
}
{
  "extension": [
    {
      "url": "url3",
      "system": "system3"
    }
  ]
}

如您所见,这两个JSON对象具有不同的.extension长度。

我使用此命令是为了映射输入JSON:

jq --raw-output '[.extension[] | .url, .system] | @csv'

您可以找到jqplay here

我明白了:

"url1","system1","url2","system2"
"url3","system3"

我想要的是:

"url1","system1","url2","system2"
"url3","system3",,

对如何正确映射这些字段有什么建议吗?

推荐答案

使用transpose | transpose翻转表两次,以使用null填充未装配的正方形形状中缺失的插槽:

jq -rs 'map(.extension) | transpose | transpose[] | map(.url, .system) | @csv' 
"url1","system1","url2","system2"
"url3","system3",,

Demo

这篇关于JQ:映射不同长度的字段数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆