-
Notifications
You must be signed in to change notification settings - Fork 8.1k
Closed
Labels
Issue-Enhancementthe issue is more of a feature request than a bugthe issue is more of a feature request than a bugResolution-FixedThe issue is fixed.The issue is fixed.WG-Cmdletsgeneral cmdlet issuesgeneral cmdlet issues
Milestone
Description
The output from ConvertTo-Json is pretty ugly at the moment:
@{
foo = @{
first = 'a'
second = 'bbbbbbbb'
}
barbarbarbar = @{
first = 'a'
second = 'bbbbbbbb'
}
dan = 15
} | ConvertTo-JsonResults in:
{
"dan": 15,
"foo": {
"second": "bbbbbbbb",
"first": "a"
},
"barbarbarbar": {
"second": "bbbbbbbb",
"first": "a"
}
}The formatting is all over the place. On the other hand, pretty much every other JSON library will produce something like this:
{
"dan": 15,
"foo": {
"second": "bbbbbbbb",
"first": "a"
},
"barbarbarbar": {
"second": "bbbbbbbb",
"first": "a"
}
}The standard JSON.NET pretty printing (Newtonsoft.Json.Formatting.Indented) may be useful, as it formats the JSON "correctly".
This is my current workaround to properly formatting JSON in PowerShell, it's a bit messy though:
# Formats JSON in a nicer format than the built-in ConvertTo-Json does.
function Format-Json([Parameter(Mandatory, ValueFromPipeline)][String] $json) {
$indent = 0;
($json -Split '\n' |
% {
if ($_ -match '[\}\]]') {
# This line contains ] or }, decrement the indentation level
$indent--
}
$line = (' ' * $indent * 2) + $_.TrimStart().Replace(': ', ': ')
if ($_ -match '[\{\[]') {
# This line contains [ or {, increment the indentation level
$indent++
}
$line
}) -Join "`n"
}(usage is like $foo | ConvertTo-Json | Format-Json)
This looks consistent across both PowerShell 5 and 6
> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.14965.1001
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14965.1001
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1> $PSVersionTable
Name Value
---- -----
PSVersion 6.0.0-alpha
PSEdition Core
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 3.0.0.0
GitCommitId v6.0.0-alpha.12
CLRVersion
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1rkeithhill, AndersRask, WilliamBerryiii, Bioxide187, toby-meyer and 41 morefdwr, ie-zero, schittli and BrunoBiluca
Metadata
Metadata
Assignees
Labels
Issue-Enhancementthe issue is more of a feature request than a bugthe issue is more of a feature request than a bugResolution-FixedThe issue is fixed.The issue is fixed.WG-Cmdletsgeneral cmdlet issuesgeneral cmdlet issues