Как обойти этот JSON в PSObject и обратно в Powershell

Powershell, похоже, не может правильно обойти этот объект JSON:

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

предполагая, что $json - это строка, следующая команда:

$json | ConvertFrom-Json | ConvertTo-Json

производит неправильный JSON из него:

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

обратите внимание, что он получает переменную" scope " неправильно. Есть ли способ исправить это?

1 ответов


использовать параметр Depth со значением 3 или больше. По умолчанию 2 недостаточно, более глубокие данные просто преобразуются в строки.

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

выход

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