arrays - 如何将 JSON 多值输出转换为正确的 JSON 格式?
问题描述
我正在尝试将以下输出转换为有效的 json 输出。无法使用 shell 脚本解决这个问题。
电流输出:
{ “adapter Type” : “Pass” , “Result” : “
ABCD/AAZZ
ABCD/AHAG” },
{ “Adapter Slot” : “Pass” , “Result” : “
PCI Slot 3
PCI Slot 2” },
{ “WWN” : “Pass” , “Result” : “
10:01:02:90
10:02:03:90” }
预期输出(json):
{
"CUT Sheet ": [{
"Host Adapter Type": "ABCD/AAZZ",
"Adapter Physical Location/Slot": "PCI Slot 3",
"HBA WWN": "10:01:02:90"
}, {
"Host Adapter Type": "ABCD/AHAG",
"Adapter Physical Location/Slot": "PCI Slot 2",
"HBA WWN": "10:02:03:90"
}]
}
是否可以转换?有人可以提供解决方案。
解决方案
我错过了当前输出中的括号和结果之间的换行符(可能是剪切和粘贴问题),但是输出:
[ {
"adapterType": "Pass",
"Result": "ABCD/AAZZ\nABCD/AHAG" }, {
"AdapterSlot": "Pass",
"Result": "PCI Slot 3\nPCI Slot 2" }, {
"WWN": "Pass",
"Result": "10:01:02:90\n10:02:03:90" } ]
重定向到:
| jq 'map_values(.Result | split("\n")) | 转置 | map( {"主机适配器类型":.[0], "适配器物理位置/插槽":.[1], "HBA WWN":.[2]})' | jq -n '."剪切表" |= [输入]'
生成输出:
{
"CUT Sheet ": [
[
{
"Host Adapter Type": "ABCD/AAZZ",
"Adapter Physical Location/Slot": "PCI Slot 3",
"HBA WWN": "10:01:02:90"
},
{
"Host Adapter Type": "ABCD/AHAG",
"Adapter Physical Location/Slot": "PCI Slot 2",
"HBA WWN": "10:02:03:90"
}
]
]
}
你需要安装 jq
推荐阅读
- html - 开始溢出时完全隐藏列
- google-sheets - 当数据在另一个工作表中时,如何从文本字符串中提取特定文本?
- python - 使用 XPath 进行网页抓取 - 复制文本 xpath 后找不到元素
- python - 如何将文件名更改为 Post Form 的标题?
- angular - Ag-grid - 如何在具有角度应用程序的第 n 级数据的 ag-grid 中显示数据
- node.js - 如何创建一个简单的 Web 代理服务器?
- bash - 我错过了什么(while 循环)?
- angular - 在 angular observable 内发出多个 http 请求
- kubernetes - 无法为组件构建时间序列:第 2 行中的文本格式解析错误:度量名称无效
- aws-lambda - 将 S3 访问添加到 SAM EFS 示例