ps/Modules/Cole.PowerShell.Developer/Private/Get-FlattenedAppsettingJsonKeyValue.ps1

31 lines
966 B
PowerShell
Raw Normal View History

2023-05-30 22:51:22 -07:00
function Get-FlattenedAppsettingJsonKeyValue {
param(
[string]$Key,
[object]$Value
)
$returnValues = @()
if ($Value.GetType().Name -eq "PSCustomObject") {
$Value = ConvertTo-Hash $Value
}
if ($Value.GetType().Name -match "Hashtable") {
$deepPairs = (Get-FlattenedAppsettingJson $Value)
foreach($pair in $deepPairs) {
$returnValues += @{ Key = "$Key`:$($pair.Key)"; Value = $pair.Value}
}
} elseif ($Value -is [System.Collections.IEnumerable] -and $Value -isnot [string]) {
for($i = 0; $i -lt $Value.Count; $i++) {
$item = $Value[$i]
$deepPairs = (Get-FlattenedAppsettingJson $item)
foreach($pair in $deepPairs) {
$returnValues += @{ Key = "$Key`[$i]`:$($pair.Key)"; Value = $pair.Value}
}
}
} else {
$returnValues += @{ Key = $Key; Value = $Value; }
}
return $returnValues
}