11

Powershell can't seem to correctly round-trip this JSON object:

{ "settings": { "minimumApproverCount": 2, "creatorVoteCounts": false, "scope": [ { "refName": "refs/heads/d14rel", "matchKind": "Exact", "repositoryId": "a290117c-5a8a-40f7-bc2c-f14dbe3acf6d" } ] } } 

Assuming $json is a string, this command:

$json | ConvertFrom-Json | ConvertTo-Json 

produces the wrong JSON out of it:

{ "settings": { "minimumApproverCount": 2, "creatorVoteCounts": false, "scope": [ "@{refName=refs/heads/d14rel; matchKind=Exact; repositoryId=a290117c-5a8a-40f7-bc2c-f14db e3acf6d}" ] } } 

Notice it gets the "scope" variable wrong. Is there a way to fix this?

1 Answer 1

12

Use the parameter Depth with value 3 or larger. The default 2 is not enough, deeper data are simply converted to strings.

$json | ConvertFrom-Json | ConvertTo-Json -Depth 3 

Output

{ "settings": { "minimumApproverCount": 2, "creatorVoteCounts": false, "scope": [ { "refName": "refs/heads/d14rel", "matchKind": "Exact", "repositoryId": "a290117c-5a8a-40f7-bc2c-f14dbe3acf6d" } ] } } 
Sign up to request clarification or add additional context in comments.

1 Comment

The max depth is 100 as of October 2019 (via ConvertTo-Json's source code).

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.