PSCustomObject を用いて既存の JSON ファイルに値を追加したい


### 前提・実現したいこと

PSCustomObjectでjsonファイルをConvertFrom-
Jsonで読み込み、値を追加して、以下のような形で出力したいのですが、どのようなコマンドを実行すれば良いかわかりません。

**InputJson**

[code]

    {
        "hoge1": {
            "hoge2": [
                {
                    "hoge3": [
    
                            ]
                }
             ]
           }
    
    
[/code]

**OutputJson**

[code]

    {
        "hoge1": {
            "hoge2": [
                {
                    "hoge3": [
                               {"foo1": {
                                   "foo2":"XXXX",
                                   "foo3":"XXXX", 
                                        }
                               }
                            ]
                }
             ]
           }
    
[/code]

### 試したこと

foo2、foo3の「key:value」については、以下のコマンドで実施できました。  
しかし、foo1(jsonで言うところのオブジェクト)の部分が追加方法がわかりません。

[code]

    $d = New-Object 'system.collections.generic.dictionary[string,string]'
    $d.Add("foo2","XXXX")
    $d.Add("foo3","XXXX")
    $PSCustomObject.hoge1.hoge2.hoge3 += $d
    
[/code]




完全なJson構造体ではなく、あくまでもPSCustomObjectとして利用するということで良いのでしたら以下で再現可能かと考えます。これで要件に足りますでしょうか？

[code]

    $base = @"
    {
        "hoge1": {
            "hoge2" : ""
        }
    }
    "@
    
    $child = @"
    {
        "hoge3" : ""
    }
    "@
    
    $grandchild = @"
    {
        "foo1" : {
            "foo2" : "XXXX",
            "foo3" : "XXXX"
        }
    }
    "@
    
    $json1 = ConvertFrom-Json $base
    $json2 = ConvertFrom-Json $child
    $json3 = ConvertFrom-Json $grandchild
    
    $json1.hoge1.hoge2 = @($json2)
    $json1.hoge1.hoge2[0].hoge3 = @($json3)
    
[/code]

> 出力  
>  PS C:\Windows\System32> $json1.hoge1.hoge2[0].hoge3[0].foo1.foo2  
>  XXXX

Json構造体として保存したりする必要がある場合、途中の配列がConvertTo-
Json出来ませんので、別途クラス化してJsonQueryStringConverterで変換するか、XMLで構成してJsonReaderWriterFactoryで相互変換可能な様にするか、配列部分のみ自力でコンバートする仕組みを組み込むかのいずれかの方法になるかなと思います。（もっと素敵なアイディアがあるかも知れませんが、今私が思いつくのはこれらの方法です）

