Repository navigation
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.1Reacted by Keith Hill, Anders Rask, Bill Berry, Kevin Contino, Toby Meyer, Michael Flanakin, Ryan Stelly, Meredith Monticello, Brian Bowman, weznagwama and 38 more
Reacted by Dwayne Robinson, I. Evangelinos, Tom-- and Bruno Bernardes da Costa
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
Activity
joeyaiello commentedon Nov 21, 2016
Steve Lee (@SteveL-MSFT) Hemant Mahawar (@HemantMahawar) are you guys okay adding
6.0.0milestone to this one?SteveL-MSFT commentedon Nov 21, 2016
Joey Aiello (@joeyaiello) considering we're targeting cloud/REST scenarios, it makes sense
Prettier formatting for ConvertTo-Json output. #2736 (#2787)
joeyaiello commentedon Mar 1, 2017
Got fixed with that commit ^
daxian-dbw commentedon Mar 8, 2017
Mike Richmond (@mirichmo), is this issue fixed by #2787? If so, please close this issue.
hamidshahid commentedon Oct 6, 2017
I see that this was done? Can we have an sample of how to use the Formatting parameter please.
SteveL-MSFT commentedon Oct 7, 2017
Hamid shahid (@hamidshahid) there's no new parameter, the output should just be prettier:
hamidshahid commentedon Oct 7, 2017
Thanks Steve, I was expecting formatting to be similar to the one we get with Formatting.Indented option in NewtonSoft Json library but it's cool
Prettier formatting for ConvertTo-Json output. PowerShell#2736 (Power…