PowerShell操作嵌套JSON 输出父子节点及计算属性使用求助
问题1 输出GTIN和SERIAL两列列表
直接遍历嵌套层级,关联对应属性输出即可:
$asn.cartons.items | ForEach-Object { $currentGtin = $_.gtin $_.serials | ForEach-Object { [PSCustomObject]@{ GTIN = $currentGtin SERIAL = $_.serial } } }
问题2 输出CARTON、GTIN、SERIAL三列列表
多保留一层父级的carton属性即可:
$asn.cartons | ForEach-Object { $currentCarton = $_.carton $_.items | ForEach-Object { $currentGtin = $_.gtin $_.serials | ForEach-Object { [PSCustomObject]@{ CARTON = $currentCarton GTIN = $currentGtin SERIAL = $_.serial } } } }
问题3 输出拼接后的自定义格式列表
构造对象时直接对属性做字符串拼接:
$asn.cartons.items | ForEach-Object { $currentGtin = $_.gtin $_.serials | ForEach-Object { [PSCustomObject]@{ "GTIN+SERIAL" = "(01)$currentGtin(21)$($_.serial)" } } }
注意事项
你之前的代码没有拿到预期结果,是因为内层循环生成的自定义对象没有输出到管道,而是赋值给了没有被返回的$serials变量,去掉赋值操作直接输出对象即可正常拿到结果。上述所有代码输出的结果都可以直接对接Export-Csv、Format-Table等命令做后续处理。
内容的提问来源于stack exchange,提问作者DN8
相关产品推荐
相关产品推荐

