json - 在 powershell 中显示 Json 嵌套数组
问题描述
我编写了一个带有嵌套数组的 JSON 脚本,并尝试根据标题显示所有数据。但不幸的是,我无法做到这一点。我将我的 JSON 和 powershell 代码放在下面。请帮助我。
JSON 代码:
{
"Deploy": {
"ENV": "DIT",
"Servers": [
{
"Webservers": [
{
"Server": ["Server1","Server2"],
"site": ["website1","WebSite2"],
"VDIR": ["WebSite1","WebSite2"]
},
{
"Server": ["Server1","Server2"],
"site": ["WebSite1","WebSite2"],
"VDIR": ["WebSite1","WebSite2"]
}
]
},
{
"Winservers": [
{
"Server": ["Server1","Server2"],
"winService": ["service1","service2"]
},
{
"Server": ["Server3","Server4"],
"winService": ["service3","service4"]
}
]
}
]
}
}
电源外壳代码:
$Deploy=(Get-Content D:\Deploy.json -Raw) -join "`n"|ConvertFrom-Json
foreach($i in $Deploy.Deploy.Servers) {
$s=($i | Get-Member -MemberType *property).Name
Write-host "$s" -ForegroundColor Yellow
foreach($j in $s) {
$items=($i.$j|Get-Member -MemberType *property).Name
Write-host "$items" -ForegroundColor Yellow
foreach($k in $items) {
$z=($j.$k | Get-Member -MemberType *property).Name
Write-host "$z" -ForegroundColor Yellow
}
}
}
当前结果是:
网络服务器 服务器站点 VDIR 赢服务器 服务器 winService
但预期结果应如下所示:
网络服务器: 服务器: 站点: VDIR: 服务器列表 站点列表 VDIR 列表 服务器: 站点: VDIR: 服务器列表 站点列表 VDIR 列表 赢服务器: 服务器:服务: 服务器列表 站点列表
请帮助......我正在以不同的方式尽力而为,但没有一个给出预期的结果。
解决方案
如果您想要实现的只是格式化输出,也许这更符合您的喜好
$deploy = Get-Content 'D:\Deploy.json' -Raw | ConvertFrom-Json
Write-Host "Webservers:`r`n-----------"
$items = @()
foreach ($server in $deploy.Deploy.Servers.Webservers) {
foreach ($item in $server) {
$items += New-Object -TypeName PSObject -Property ([ordered]@{
Server = @($item.Server) -join ', '
Sites = @($item.site) -join ', '
VDIR = @($item.VDIR) -join ', '
})
}
}
$items | Out-String
Write-Host "Winservers:`r`n-----------"
$items = @()
foreach ($server in $deploy.Deploy.Servers.Winservers) {
foreach ($item in $server) {
$items += New-Object -TypeName PSObject -Property ([ordered]@{
Server = @($item.Server) -join ', '
WinService = @($item.winService) -join ', '
})
}
}
$items | Out-String
输出将如下所示:
Webservers:
-----------
Server Sites VDIR
------ ----- ----
Server1, Server2 website1, WebSite2 WebSite1, WebSite2
Server1, Server2 WebSite1, WebSite2 WebSite1, WebSite2
Winservers:
-----------
Server WinService
------ ----------
Server1, Server2 service1, service2
Server3, Server4 service3, service4
推荐阅读
- c# - 如何将类序列化为 JSON,其中属性类型为 Windows.Data.Json.JsonObject?
- r - 在 ggplot 中,如何用正值和负值记录比例?
- javascript - VUE 3我如何检查元素何时在视口中?
- c# - 依赖其他项目的 DLL 时,如何在 APP Center 中执行 Xamarin UI 测试?
- java - 当我单击 recyclerView 中的项目时打开特定活动
- javascript - 如何通过基本身份验证访问 IP url
- reactjs - 如何识别网站是否使用 react-native-web 制作?
- soap - 使用 VBScript 发送 SOAP 请求时出现 Server.userException
- python - 如何使用 send_file 烧瓶框架发送 zip 文件
- asynchronous - Rust - 如何在一个应用程序中使用同步和异步 crate