json - 防止powershell对来自json的结果进行分组
问题描述
我正在解析 json 文件,并且该过程正在执行我期望的操作,但有一个例外:当我希望将结果按行拆分时,它会返回分组在一起的结果。
我想要得到的是文件中的错误列表
$json = '{
"building": [
{
"buildingname": "NAPA Auto Parts",
"files": [{
"sheets": [{
"name": "BATTERY",
"results": [{
"filename": "BATTERY - 1679568711.xlsx",
"sku": "1679568711"
}
]
}
],
"name": "2.15.19.xlsx",
"status": "processed",
"fileId": "c586bba6-4382-42c4-9c29-bffc6f7fe0b6"
}, {
"name": "Oct-Nov 2018 11.30.18.xlsx",
"errors": ["Unknown sheet name: TOILET PLUNGER"],
"status": "failed",
"fileId": "afa7c43f-26dc-421c-b2eb-45ad1e899c42"
}
]
},
{
"buildingname": "O''Reily Auto Parts",
"files": [{
"sheets": [{
"name": "ALTERNATOR",
"results": [{
"filename": "ALTERNATOR - 6.3.19 1629453444.xlsx",
"sku": "1629453444"
}
]
}, {
"name": "OIL FILTER",
"results": [{
"filename": "OIL FILTER - 6.3.19 1629453444.xlsx",
"sku": "1629453444"
}
]
}
],
"name": "6.3.19.xlsx",
"status": "processed",
"fileId": "647089fe-9592-4e2b-984f-831c4acd4d9c"
}
]
}
]
}'
$psdata = ConvertFrom-Json -InputObject $json
$psdata.building | Select buildingname, @{Name="errors";E={$_.files | Select -Expand errors}}, @{Name="fileId";E={$_.files | Select -Expand fileId}} | Where-Object {$_.errors -ne $null}
我得到这些结果
buildingname errors fileId
------------ ------ ------
NAPA Auto Parts Unknown sheet name: TOILET PLUNGER {c586bba6-4382-42c4-9c29-bffc6f7fe0b6, afa7c43f-26dc-421c-b2eb-45ad1e899c42}
这就是我想要得到的
buildingname errors fileId
------------ ------ ------
NAPA Auto Parts Unknown sheet name: TOILET PLUNGER afa7c43f-26dc-421c-b2eb-45ad1e899c42
如何防止 powershell 将结果分组在一起?
解决方案
抱歉,不确定你到底要做什么,但我现在明白了。像这样循环怎么样:
$psdata.building | foreach-Object {
foreach ($File in $_.files)
{
[PSCustomObject]@{
BuildingName = $_.BuildingName
Errors = & {if ($File.Errors) {$File.Errors}}
fileId = $File.fileId
}
}
}
推荐阅读
- javascript - 在 PWA 中在线(wifi 开启)时,后台同步代码无法自动工作
- mysql - Spring 应用程序中的 crudRepository 中的不同移动计数不起作用
- mysql - Mysql获取加入/选择表的最新行(1:n)
- ios - 我可以自定义类从类数组继承吗?
- chatbot - 是否有任何具有公共 API 的通用聊天机器人?
- html - I want option text break or equal to select width?
- spring - 为什么 headers Map 包含一个 List
作为值而不是字符串? - javascript - 当用户单击 Windows 警报框的确定按钮时,使用 jquery 将消息复制到用户剪贴板
- database - 无法读取记录;'MSYSObjects' 没有读取权限
- android - Android 5.1 中的语音通话录音