Reputation: 81801
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?
Upvotes: 11
Views: 2388
Reputation: 42033
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"
}
]
}
}
Upvotes: 12