使用jq重塑json文件

时间:2017-03-13 16:46:04

标签: json jq

我需要转换以下内容

输入:

{
      "id-952": [
        "serial-8915"
      ],
      "id-546": [
        "serial-5747",
        "serial-8735"
      ]

期望的输出:

{
"serial-8915": ["id-952"],
"serial-5747": ["id-546"],
serial-8735": ["id-546"]
}

我的尝试,在jqplay:

keys, .[]

输出:

[
  "id-546",
  "id-952"
]
[
  "serial-8915"
]
[
  "serial-5747",
  "serial-8735"
]

什么jq命令是合适的?

2 个答案:

答案 0 :(得分:0)

最简单的强大(相对于jq版本)解决方案可能是:

 to_entries | map( {(.key): .value} ) | add

这里的主要精妙之处在于.key周围的一对括号。

答案 1 :(得分:0)

以下是另一种使用添加

的解决方案
. as $d | [ keys[] | {($d[.][]): [.]} ] | add

或等效

. as $d | keys | map( {($d[.][]):[.]} ) | add