web-dev-qa-db-fra.com

Prettify json dans powershell 3

Étant donné une valeur de chaîne json standard:

$jsonString = '{ "baz": "quuz", "cow": [ "moo", "cud" ], "foo": "bar" }'

Comment puis-je obtenir que tout soit joli avec les nouvelles lignes, de préférence sans regex de force brute?

La méthode la plus simple que j'ai trouvée jusqu'à présent est la suivante:

$jsonString | ConvertFrom-Json | ConvertTo-Json 

Cependant, cela semble un peu idiot.

26
Eris

Travaille pour moi. Les parenthèses s'assurent que le get-content est fait avant le piping. La profondeur par défaut de convertto-json est de 2, ce qui est souvent trop faible.

function pjson ($jsonfile) {
  (get-content $jsonfile) | convertfrom-json | convertto-json -depth 100 | 
    set-content $jsonfile
}
11
js2010

Si vous ne voulez vraiment pas emprunter la voie la plus simple, qui consiste à utiliser les fonctions PowerShell intégrées | ConvertFrom-Json | ConvertTo-Json, voici une autre méthode, utilisant JSON.net

# http://james.newtonking.com/projects/json-net.aspx
Add-Type -Path "DRIVE:\path\to\Newtonsoft.Json.dll"

$jsonString = '{ "baz": "quuz", "cow": [ "moo", "cud" ], "foo": "bar" }'
[Newtonsoft.Json.Linq.JObject]::Parse($jsonString).ToString()
4
TechSpud