jq通过转换现有的json来创建一个新的json

时间:2017-03-13 11:49:57

标签: json jq

    {
    "prodid_876006": {
        "serid": [{
            "seridone": "3265874"
        }, {
            "seridtwo": "21458915"
        }],
        "serials": ["028915"]
    },
    "prodid_980": {
        "serid": [{
            "seridone": "32743214"
        }, {
            "seridtwo": "5469872"
        }],
        "serials": ["192147","1632589"]
    }
}

期望的输出: 对于每个json对象,提取prodid_ info和serials数组,并使用以下格式创建一个新的json文件:

{    
"prodid_876006" : ["028915"],
"prodid_980" : ["192147","1632589"]
}

这是什么jq命令?

keys ,.[].serials

给我以下内容:

[
  "prodid_876006",
  "prodid_980"
]
[
  "028915"
]
[
  "192147",
  "1632589"
]

更新问题:

我怎么能进入另一个json以下输出? (这里的键是序列数组的每个元素,值是第一个样本json的键):

{    
"028915" : ["prodid_876006"],
"192147" : ["prodid_980"],
"1632589" : ["prodid_980"]
}

1 个答案:

答案 0 :(得分:2)

这样的东西可行,你可以提取一组键值对并输送到from_entries

% jq '[to_entries[] | {"key": .key, "value": .value.serials}] | from_entries' 42762941.json
{
  "prodid_876006": [
    "028915"
  ],
  "prodid_980": [
    "192147",
    "1632589"
  ]
}