[英]Powershell: Reformat JSON nested Arrays to Array of Objects
我正在嘗試修改格式錯誤的JSON文本文件,目前看起來像這樣:
[
["val1", "val2", "val3", "val4"],
["val5", "val6", "val7", "val8"],
["val9", "val10", "val11", "val12"]
]
我有一個包含字段名稱的其他數組
["title1", "title2", "title3", "title4"]
我想輸出一個final.json文本文件,如下所示:
[
{"title1": "val1", "title2": "val2", "title3": "val3", "title4": "val4"},
{"title1": "val5", "title2": "val6", "title3": "val7", "title4": "val8"},
{"title1": "val9", "title2": "val10", "title3": "val11", "title4": "val12"}
]
我想最好的方法是取每一行,拆分,
然后將它們重新添加到標題名稱上,但我不確定如何在PowerShell中執行此操作。
由於您在這里處理結構化數據,我認為最好的方法是解析JSON,並使用生成的對象。 創建所需的對象,然后轉換回JSON:
$j1 = @'
[
["val1", "val2", "val3", "val4"],
["val5", "val6", "val7", "val8"],
["val9", "val10", "val11", "val12"]
]
'@
$j2 = @'
["title1", "title2", "title3", "title4"]
'@
$a1 = $j1 | ConvertFrom-Json
$a2 = $j2 | ConvertFrom-Json
0..($a1.Count-1) | ForEach-Object {
$i = $_
$props = @{}
0..($a2.Count-1) | ForEach-Object {
$props[$a2[$_]] = $a1[$i][$_]
}
New-Object PSOBject -Property $props
} | ConvertTo-Json
ConvertTo-Json
和ConvertFrom-Json
是序列化/反序列化JSON所需的cmdlet。 然后你就可以使用這些對象。
在這種情況下,我將瀏覽$a1
每個頂級數組並創建包含所需屬性的哈希表。 然后我用這些屬性創建一個PSObject
。 從ForEach-Object
cmdlet返回(結果是這些對象的數組),然后將其直接傳送到ConvertTo-Json
以提供所需的輸出。
我認為更好的方法是通過ConvertFrom-Json讀取第一個JSON格式,然后獲取該數組數組,並為每一行,從哈希表創建一個PSCustomObject,例如[PSCustomObject]@{title1=$arr[$row][0]; title2=$arr[$row][1];...}
[PSCustomObject]@{title1=$arr[$row][0]; title2=$arr[$row][1];...}
。 一旦你有了PSCustomObject的數組,用ConvertTo-Json將它轉換回JSON。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.