É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.
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
}
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()