web-dev-qa-db-ja.com

PowerShellを使用してJSONオブジェクトをファイルに保存する方法は?

次のJSONファイルをpowershell表現オブジェクトに変換しました。

{
"computer": [
    {
        "children": [   
            {   
                "children": [ {
                   "children": [ {
                        "path": "T:\Dropbox\kvaki.html",
                        "name": "kvaki",
                        "type": "url",
                        "url": "http://example.com"
                   } ],
                    "path": "T:\Dropbox\",
                    "name": "Njusha",
                    "type": "folder"
                }, {
                    "path": "T:\Dropbox\Europa.html",
                    "name": "Europa",
                    "type": "url",
                    "url": "http://example.com"
                }, {
                    "path": "T:\Dropbox\math.html",
                    "name": "math",
                    "type": "url",
                    "url": "http://example.com"
                } ],
                "path": "T:\Dropbox\",
                "name": "Money",
                "type": "folder"
            }
        ],
        "full_path_on_file_sys": "T:\Dropbox\"
    }
]

}

PowerShell表現で計算を行った後、JSONとしてファイルに保存したいと思います。しかし、コマンド$jsonRepresentation | ConvertTo-Json | Out-File "D:\dummy_path\file.json"この方法で保存します

{
    "computer":  [
                     {
                         "children":  " ",
                         "full_path_on_file_sys":  "T:\Dropbox\"
                     }
                 ]
}

質問:複雑なPowerShell JSON表現の正しい保存を実現する方法?

22
Puzik

ConvertTo-Jsonの-depth引数は、問題を解決します。

$jsonRepresentation | ConvertTo-Json -depth 100 | Out-File "D:\dummy_path\file.json"
53
Puzik

それをSet-ContentまたはOut-Fileにパイプするだけです:

Get-Process powershell |
 ConvertTo-Json | 
 Set-Content json.txt
8
mjolinor

powerShellバージョン2にこだわっている場合は、 「PowerShellコードリポジトリ」のJoel BennettのJSONモジュール が役立つ場合があります。

1
user4531
$json.properties.metadata | ConvertTo-Json -Compress
0
Peter

出力の表示とファイルへの保存の両方を行う場合は、teeコマンドをパイプできます。

Get-Process powershell | ConvertTo-Json |  Tee-Object json.txt
0
Jim Wolff