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

2023-12-30

    {
    "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 中获得以下输出? (这里的键是serials数组的每个元素,值是第一个示例json的键):

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

像这样的东西会起作用,您可以提取一个键值对数组并通过管道传输到from_entries:

% jq '[to_entries[] | {"key": .key, "value": .value.serials}] | from_entries' 42762941.json
{
  "prodid_876006": [
    "028915"
  ],
  "prodid_980": [
    "192147",
    "1632589"
  ]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jq 通过转换现有的 json 创建一个新的 json 的相关文章

随机推荐