probléma reprodukálása:
$array = @("a","b","c")
$data = @{"sub" = @{"sub-sub" = $array}}
$output = @{"root" = $data}
ConvertTo-Json -InputObject $data
ConvertTo-Json -InputObject $output
Van egy $userDataObject változóm amit így hozok létre:
$userDataObject = New-Object -TypeName PSObject -Property @{}
És így adok hozzá:
$userDataObject | Add-Member "user" @{"key" = $valueArray}
Ha erre a userDataObject-re ráküldöm a ConvertTo-Json-t akkor szépen bekerülnek a valueArray elemei szögletes zárójelek közé.
Ellenben ha a meglévő userDataObject-et rakom bele egy hashtable-be:
$output = New-Object -TypeName PSObject -Property @{}
$output | Add-Member "result" $userDataObject
Akkor hopp, volt array nincs array. Lett belőle egy sima string. Mindent próbáltam már. Illetve minden zavaró tényezőt is eltüntettem. Kiiratom a userDataObject-et, létrehozom az $output-ot és azt is rögtön kiiratom. Egyszerűen nem tudok mit kezdeni a powershell típuskezelésével. Nem tudom hol nyúlhatnék bele amitől a string array-ek maradnak string array-ek.
Az elkeserítő kimenetek:
$userDataObject json-ná alakítva (itt még minden rendben van):
"meres": {
"groups": [
"wheel",
"meres",
"pegasus"
],
"id": "1000",
"home": "/home/meres"
},
$output json-ná alakítva (ezt meg mégis hogy találta ki?):
"meres": {
"groups": "wheel meres pegasus",
"id": "1000",
"home": "/home/meres"
},