web-dev-qa-db-fra.com

Comment enregistrer un objet JSON dans un fichier avec Powershell?

J'ai converti le fichier JSON suivant en objet de représentation 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\"
    }
]

}

Après avoir fait quelques calculs avec une représentation Powershell, je voudrais l’enregistrer dans un fichier JSON. Mais la commande $jsonRepresentation | ConvertTo-Json | Out-File "D:\dummy_path\file.json" l'enregistre de cette façon

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

Question: comment réaliser une sauvegarde correcte de la représentation JS PowerShell complexe?  

21
Puzik

L'argument -depth de ConvertTo-Json résout le problème. 

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

Dirigez-le simplement vers Set-Content ou Out-File:

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

si vous êtes coincé avec PowerShell version 2, le module JSON de Joel Bennett du «référentiel de code PowerShell» pourrait vous aider.

1
user4531

$ json.properties.metadata | ConvertTo-Json -Compress

0
Peter

Si vous souhaitez afficher le résultat et le sauvegarder dans un fichier, vous pouvez diriger la commande tee.

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