【发布时间】:2022-01-01 09:21:24
【问题描述】:
开始学习 PS 并被困在如何使用 Select-Object 和 Calculated Properties 上。你能帮忙吗?
给定 以下结构的嵌套 JSON 文件:
{
"asn": "111",
"cartons": [
{
"carton": "00300000000000000001",
"items": [
{
"gtin": "04000000000001",
"serials": [
{
"serial": "gQ6;66/Iokpa0"
},
{
"serial": "1JFgKK,ImIwH\""
},
{
"serial": "feDiSStPwQSr3"
}
]
}
]
},
{
"carton": "00300000000000000002",
"items": [
{
"gtin": "04000000000002",
"serials": [
{
"serial": "bMG-u2jCc4LfM"
},
{
"serial": "KEOHZ6enUPT)6"
}
]
}
]
},
{
"carton": "00300000000000000003",
"items": [
{
"gtin": "04000000000003",
"serials": [
{
"serial": "344r,I1n3o:Gn"
},
{
"serial": "N:NYiBXGYCQl("
}
]
}
]
}
]
}
问题一如何输出列表:
GTIN SERIAL
---- ------
04000000000001 gQ6;66/Iokpa0
04000000000001 1JFgKK,ImIwH"
04000000000001 feDiSStPwQSr3
04000000000002 bMG-u2jCc4LfM
04000000000002 KEOHZ6enUPT)6
04000000000003 344r,I1n3o:Gn
04000000000003 N:NYiBXGYCQl(
问题2如何输出列表:
CARTON GTIN SERIAL
------ ------ ------
00300000000000000001 04000000000001 gQ6;66/Iokpa0
00300000000000000001 04000000000001 1JFgKK,ImIwH"
00300000000000000001 04000000000001 feDiSStPwQSr3
00300000000000000002 04000000000002 bMG-u2jCc4LfM
00300000000000000002 04000000000002 KEOHZ6enUPT)6
00300000000000000003 04000000000003 344r,I1n3o:Gn
00300000000000000003 04000000000003 N:NYiBXGYCQl(
问题 3 如何通过附加插入输出 PARENT 和 CHILD 节点的串联:
GTIN+SERIAL
------------
(01)04000000000001(21)gQ6;66/Iokpa0
(01)04000000000001(21)1JFgKK,ImIwH"
(01)04000000000001(21)feDiSStPwQSr3
(01)04000000000002(21)bMG-u2jCc4LfM
(01)04000000000002(21)KEOHZ6enUPT)6
(01)04000000000003(21)344r,I1n3o:Gn
(01)04000000000003(21)N:NYiBXGYCQl(
我的尝试
首先,我和-expandProperty一起玩
$asn = convertFrom-Json -inputObject $j #actually, in the full code don't need this conversion, use Invoke-RestMethod
$asn.cartons.items | select-object -property gtin -expandProperty serials
然后尝试采用powershell json print parent and children和how to combine properties from objects and their "parent" object?的代码,但没有成功。
然后通过 about_Calculated_Properties - 再次只是简单的示例。
然后:
$asn = convertFrom-Json -inputObject $j
$asn.cartons.items | ForEach-Object {
$gtin = $_.gtin
$serials = $_.serials | ForEach-Object {
[pscustomobject] @{
'gtin' = $gtin
'serial' = $_.serial
}
}
}
【问题讨论】:
-
您是否尝试过自己编写任何代码来执行此操作?在此处发帖时,您通常会被问到这个问题。尝试发布您的尝试。
-
至少尝试一下,如果您遇到困难,我们可以为您提供帮助。
-
添加了我的尝试。
标签: json powershell