Linked Questions

Popular Questions

I am creating a JSON in Powershell and I want to set a custom tab width when building it (instead of the default 4 white spaces I want to set only 2 white spaces).

I am doing this because:

  • the actual JSON (not the one presented in the below sample) is pretty big (100k+ rows) and if not archieved, it's size is pretty big; If I reduce the tab width the size reduction is notable.
  • the actual JSON has a depth of 5+ nodes !
  • I cannot use -Compress since the JSON needs to be human readable
  • Yes, I agree, if archived, it's size is dramatically reduced but I need it also unarchived.

Sample code:

$object = New-Object PSObject
Add-Member -InputObject $object -MemberType NoteProperty -Name Phone -Value "SomePhone"
Add-Member -InputObject $object -MemberType NoteProperty -Name Description -Value "Lorem ipsum dolor.."
Add-Member -InputObject $object -MemberType NoteProperty -Name Price -Value 99.99

$object | ConvertTo-Json

Result with tab width = 4 white space characters.

{
    "Phone":  "SomePhone",
    "Description":  "Lorem ipsum dolor..",
    "Price":  99.99
}

I tried compression but it doesn't give control over compression level (how agressive compression should be)

$object | ConvertTo-Json -Compress

Result compressed, obviously.

{"Phone":"SomePhone","Description":"Lorem ipsum dolor..","Price":99.99}

What I am trying to achieve: result with tab width = 2 white space characters.

{
  "Phone":  "SomePhone",
  "Description":  "Lorem ipsum dolor..",
  "Price":  99.99
}

What I've tried so far is in the pseudo code below. I'm still in the loop. Please get me out of there :)

while (1) {
    Google, StackOverflow
    Try Stuff found 
    Tweak stuff found

    if (Correct answer) {
        break
    }
}

Related Questions