json - 使用嵌套对象解析 json 文件
问题描述
我想请你帮忙。
我正在与“jq”解析器作斗争,但没有想法。我只需要从给定的 json 文件中提取所需的行。
这是我的文件:
{
"SystemInventory": {
"BIOS": [
{
"BIOSReleaseDate": "11/12/2020",
"FQDD": "BIOS.Setup.1-1",
"SMBIOSPresent": "True",
"VersionString": "2.10.0"
}
],
"CPU": [
{
"CPUFamily": "Intel(R) Xeon(TM)",
"Characteristics": "64-bit capable",
"CurrentClockSpeed": "2.2 GHz",
"DeviceDescription": "CPU 1"
},
{
"CPUFamily": "Intel(R) Xeon(TM)",
"Characteristics": "64-bit capable",
"CurrentClockSpeed": "2.2 GHz",
"DeviceDescription": "CPU 2"
}
],
"iDRACNIC": [
{
"IPv4Address": "6.6.16.16",
"NICDuplex": "Full",
"NICEnabled": "Enabled",
"NICSpeed": "100",
"PermanentMACAddress": "5c:d8:8f:1e:51:ce"
}
]
}
}
我只需要几行,比如说,我希望输出是这样的:
"BIOSReleaseDate": "11/12/2020"
"VersionString": "2.10.0"
"CPUFamily": "Intel(R) Xeon(TM)"
"DeviceDescription": "CPU 1"
"DeviceDescription": "CPU 2"
"IPv4Address": "6.6.16.16"
"NICSpeed": "100"
我用“jq”解析器尝试了它,但是当涉及到嵌套对象时,我没有想法。有没有办法如何通过 jq 实现这一目标?
我会很感激任何帮助..
提前谢谢了
以下如何根据您的输入解析特定行的方法对我来说似乎更方便:
cat data.json | jq '.SystemInventory.BIOS[0] | {BIOS: .VersionString}'
{
"BIOS": "2.10.0"
}
和
cat data.json | jq '.SystemInventory.iDRACNIC[0] | {IP: .IPv4Address}'
{
"IP": "6.6.16.16"
}
有没有办法在一个命令中实现这一点?提前致谢!
解决方案
jq '.SystemInventory.BIOS[0].BIOSReleaseDate'
似乎很好,但我只会得到一行,以及如何与另一行结合,例如jq '.SystemInventory.iDRACNIC[0].IPv4Address'
,我会得到两行作为输出?谢谢
推荐阅读
- python - 用新的用户输入覆盖以前的用户输入变量
- excel - 从其他工作表上的不同工作表基础中提取 col 值
- appium - UIAutomator 或 Appium 的对象创建
- java - 爪哇 8:
预期的 - visual-studio-code - Apollo DataSource - 如何让 VSCode Intellisense 使用它?
- reactjs - 如何使用 React fetch 修复来自 iTunes api 的零返回数据
- javascript - 通过js向上更改手风琴箭头
- swift - Can I render the same SKScene to two different views simultaneously?
- angular - 想以角度改变可重用嵌套组件的样式
- r - 无法更改图例框中的文本标签并使用 ggplot 在图例中显示不同的颜色