[英]Flattening a Sub-Array in a Powershell Object, including parent object property
給定以下 JSON
[
{
"key": "James",
"things": [
{
"id": 123,
"name": "PRD"
},
{
"id": 124,
"name": "PRE"
}
]
},
{
"key": "Susan",
"things": [
{
"id": 125,
"name": "PRF"
},
{
"id": 126,
"name": "PRG"
}
]
}
]
其中,我很容易轉換成 Powershell object:
$json = '[{"key":"James", "things":[{"id":123,"name":"PRD"},{"id":124,"name":"PRE"}]},{"key":"Susan", "things":[{"id":125,"name":"PRF"},{"id":126,"name":"PRG"}]}]'
$obj = $json | ConvertFrom-Json
如何展平子陣列的things
並包含來自父 object 的key
,以便我的結果集是
key id name
--- -- ----
James 123 PRD
James 124 PRE
Susan 125 PRF
Susan 126 PRG
我使用以下方法來展平子陣列:
$obj | % { $_.things}
哪個返回我
id name
-- ----
123 PRD
124 PRE
125 PRF
126 PRG
但是,我無法完全弄清楚下一步該做什么。
任何幫助將非常感激。
您循環到每個鍵,然后循環到每個事物,因為您希望每個事物有 1 個結果,並使用當前鍵、id 和名稱構建一個 PSObject。
這里是 go。
# initial code sample
$json = '[{"key":"James", "things":[{"id":123,"name":"PRD"},{"id":124,"name":"PRE"}]},{"key":"Susan", "things":[{"id":125,"name":"PRF"},{"id":126,"name":"PRG"}]}]'
$obj = $json | ConvertFrom-Json
# Loop needed to flatten the object.
foreach ($i in $obj) {
foreach ($t in $i.things) {
[PSCustomObject]@{
key = $i.key
id = $t.id
name = $t.name
}
}
}
Output
key id name
--- -- ----
James 123 PRD
James 124 PRE
Susan 125 PRF
Susan 126 PRG
您可以使用 select 的內置展平,如下所示:
($json | ConvertFrom-Json) | Select-Object 鍵-ExpandProperty 事物
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.