我有以下数组,其中包含数千个 json 元素,如下所示
[
{
“id”:302,
“主机名”:“laptop857”,
“总内存”:31722,
“总交换量”:92535,
“分布”:“22.04”,
“硬件”: [
[
“产品”,
“XPS 15 7590 (0905)”,
无效的
],
[
“小贩”,
“戴尔公司”,
无效的
],
[
“连续剧”,
“XXDPXXX”,
无效的
]
]
}
{
“id”:303,
“主机名”:“laptop858”,
....
},
]
我的目标是解析 json 文件并为每个元素提取主机名、发行版和序列号。我想创建一个报告,其中每一行代表一台计算机,例如 笔记本电脑857,22.04,XXDPXXX 笔记本电脑858,....
我能够同时输出主机名和发行版 我也可以对序列号执行此操作,但某些条目没有序列号并且解析失败 无论我尝试将 3 个元素放在同一行上,我总是收到错误
有人可以提供点击或我应该注意什么来实现我的结果的任何机会 我可以接受这样的条目 laptop857,22.04,串行 XXDPXXX 空
您可以使用
?
抑制由不存在的部件引起的错误,并使用 //
提供默认替代方案。例如:
.[] | [
.hostname,
.distribution,
first(.hardware[] | select(.[0] == "serial") | .[1])? // "none"
] | @csv