private/ConvertFrom-JsonToHash.ps1

function ConvertFrom-JsonToHash{
    Param(
        [Parameter(Mandatory=$true)][string]$path,
        [Parameter(Mandatory=$true)][string]$exclusionPattern
    )
    $hashtable = @{}
    $reader = [System.IO.StreamReader]::new($path)
    
    $bufferCleansed = ""
    $bufferOriginal = ""

    try {
        while ($line = $reader.ReadLine()) {
            if($line -in @(""," ","`n","`r","`t","[","]")){
                continue #skip empty lines or array starts/stops
            }
            if($line -match $exclusionPattern){
                $bufferOriginal += $line
                continue #skip excluded properties
            }
            if($line -match '^[\W_]*\{[\W_]*$'){
                $bufferOriginal = $line
                $bufferCleansed = $line #start of a new object
            }elseif($line -match '^[\W_]*\}[\W_]*$'){
                $bufferCleansed += "}" #end of an object
                $bufferOriginal += "}"
                if($bufferCleansed -eq $bufferOriginal){
                    $hashtable[$bufferCleansed.Replace(",}","}")] = $true
                }else{
                    $hashtable[$bufferCleansed.Replace(",}","}")] = $bufferOriginal
                }
            }else{
                $bufferOriginal += $line
                $bufferCleansed += $line
            }
        }
    } finally {
        $reader.Close()
    }
    return $hashtable
}