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
Please also mark the comments that contributed to the solution of the article
Content-ID: 629291
Url: https://administrator.de/contentid/629291
Printed on: December 2, 2024 at 17:12 o'clock
3 Comments
Latest comment
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.