Powershell Json Aufbau Verschachtelung
Aloa in die Runde,
Ausgabe:
Warum schreibt er mir in die Ausgabe "System.Collections.Specialized"?
Ich hätte folgendes erwartet:
Ist doch das gleiche wie bei Laufwerke, nur 2 Ebenen mehr verschachtelt?
Oder wird mein grauer Star blind? =)
VG
$jsonInhalt = [ordered]@{Allgemein=@{"PfadCfg"='';"PfadLib"=''};
Laufwerke=[ordered]@{};
Services=[ordered]@{
Hersteller1=[ordered]@{
Core=[ordered]@{"Dienstname"='';"Status"=''};
Runtime=[ordered]@{"Dienstname"='';"Status"=''}
};
Hersteller2=[ordered]@{
ManagementAgent=[ordered]@{}
}
}
}
$jsonInhalt.Allgemein.PfadCfg = "C:\temp\Config\Config.json"
$jsonInhalt.Allgemein.PfadLib = "C:\temp\Lib\Lib.json"
$jsonInhalt.Laufwerke.C = "C:\"
$jsonInhalt.Laufwerke.D = "D:\"
$jsonInhalt.Laufwerke.E = "E:\"
$jsonInhalt.Services.Hersteller1.Core.Dienstname = "Core"
$jsonInhalt.Services.Hersteller1.Core.Status = "Running"
$jsonInhalt.Services.Hersteller1.Runtime.Dienstname = "pext"
$jsonInhalt.Services.Hersteller1.Runtime.Status = "Running"
$jsonInhalt.Services.Hersteller2.ManagementAgent.Dienstname = "SMA"
$jsonInhalt.Services.Hersteller2.ManagementAgent.Status = "Running"
$jsonInhalt | ConvertTo-Json
Ausgabe:
{
"Allgemein": {
"PfadLib": "C:\\temp\\Lib\\Lib.json",
"PfadCfg": "C:\\temp\\Config\\Config.json"
},
"Laufwerke": {
"C": "C:\\",
"D": "D:\\",
"E": "E:\\"
},
"Services": {
"Hersteller1": {
"Core": "System.Collections.Specialized.Orde
redDictionary",
"Runtime": "System.Collections.Specialized.O
rderedDictionary"
},
"Hersteller2": {
"ManagementAgent": "System.Collections.Specialized
.OrderedDictionary"
}
}
}
Warum schreibt er mir in die Ausgabe "System.Collections.Specialized"?
Ich hätte folgendes erwartet:
{
"Allgemein": {
"PfadLib": "C:\\temp\\Lib\\Lib.json",
"PfadCfg": "C:\\temp\\Config\\Config.json"
},
"Laufwerke": {
"C": "C:\\",
"D": "D:\\",
"E": "E:\\"
},
"Services": {
"Hersteller1": {
"Core": "System.Collections.Specialized.Orde
redDictionary",
"Runtime": "System.Collections.Specialized.O
rderedDictionary"
},
"Hersteller2": {
"ManagementAgent": {
"Dienstname" ="SMA",
"Status"="Running"
}
}
}
}
Ist doch das gleiche wie bei Laufwerke, nur 2 Ebenen mehr verschachtelt?
Oder wird mein grauer Star blind? =)
VG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 629291
Url: https://administrator.de/contentid/629291
Ausgedruckt am: 04.12.2024 um 08:12 Uhr
3 Kommentare
Neuester Kommentar
Tipp ...Parameter -Depth bei ConvertTo-Json .
-Depth
Specifies how many levels of contained objects are included in the JSON representation. The default value is 2.
Specifies how many levels of contained objects are included in the JSON representation. The default value is 2.
Zitat von @H41mSh1C0R:
*grübel* warum man sowas überhaupt angeben muss, das ergibt sich doch aus der Struktur oder gibt es einen praktischen Grund das so zu tun.
Ja war eine schlechte Wahl seitens MS, aber in der neuen PS Versionen wurde das endlich geändert*grübel* warum man sowas überhaupt angeben muss, das ergibt sich doch aus der Struktur oder gibt es einen praktischen Grund das so zu tun.
https://powershell.anovelidea.org/powershell/ps7now-changes-to-json-cmdl ...
In PowerShell 7, Get-Help -Name ConvertFrom-Json -Full reveals that -Depth parameter accepts type [Int32] and has a default value of 1024. This is already a great improvement over the older cmdlet.