I am writing a script for my site that utilizes a JSON configuration file. The JSON is similar to the following:
\"Groups\": {
\"GroupOne\": {
\"Nami
I think I might have just figured it out thanks to the blog post Converting PsCustomObject To/From Hashtables.
Using Get-Member
and then -MemberType
exposes each Group and then you just pull the:
foreach ($group in $configObject.Groups) {
$groupName = $($group | Get-Member -MemberType *Property).Name
}
Outputs:
GroupOne
GroupTwo
GroupThree
I'm open to any other methods though.
I've found another way, but the only drawback is it doesn't use the fancy ConvertFrom-Json
CmdLet. Instead it goes straight to the .NET library and uses its deserializer and converts it to a HashTable. This completely avoids having to muddle around with the PSCustomObject. IMO hashtables are a whole lot easier to work with.
$JSON = Get-Content -Path path/to.json -Raw
$HT = (New-Object System.Web.Script.Serialization.JavaScriptSerializer).Deserialize($JSON, [System.Collections.Hashtable])
$HT.Groups.GetEnumerator() | ForEach-Object {
Write-Host "$($_.Key) : $($_.Value)"
}