PowerShell读取JSON文件多值并按索引对应输出的方法
解决方案
你需要通过循环按索引对齐三个数组的元素,才能得到预期输出。ConvertFrom-Json解析生成的对象中,TestEvent、Folder、NEL是三个互相独立的数组,直接输出属性会按属性顺序依次打印所有数组元素,无法自动按索引分组。
1. 按索引分组输出
通过for循环遍历索引位,每次取三个数组对应位置的元素输出,组间加空行分隔即可:
# 读取JSON文件,-Raw参数一次性读取完整文本避免解析异常 $json = Get-Content "C:\Test.json" -Raw | ConvertFrom-Json $count = $json.TestEvent.Length for ($i = 0; $i -lt $count; $i++) { $json.TestEvent[$i] $json.Folder[$i] $json.NEL[$i] if ($i -lt $count - 1) { Write-Output "" } }
执行后输出效果和你给出的分组示例完全一致。
2. 带表头的表格输出
将同索引的三个元素组装为自定义对象,再通过Format-Table自动排版为对齐的表格:
$json = Get-Content "C:\Test.json" -Raw | ConvertFrom-Json $count = $json.TestEvent.Length $result = for ($i = 0; $i -lt $count; $i++) { [PSCustomObject]@{ TestEvent = $json.TestEvent[$i].ToUpper() # 匹配示例中的全大写格式 Folder = $json.Folder[$i] NEL = $json.NEL[$i] } } # AutoSize参数自动调整列宽适配内容 $result | Format-Table -AutoSize
原代码问题说明
原代码重复执行了两次JSON解析属于冗余操作,且没有做索引对齐逻辑,因此输出是按属性顺序排列的所有数组元素,不符合分组/表格的输出要求。
内容的提问来源于stack exchange,提问作者NIREN GUPTA
相关产品推荐
相关产品推荐

