Почему ConvertTo-Json сбрасывает значения - PullRequest
0 голосов
/ 17 ноября 2018

Я использую PowerShell для изучения REST API. Я обнаружил странную аномалию. Когда я сериализую / опишу следующий объект, объект responses исчезнет! Я проверил, что он все еще в такте при преобразовании в объект .net, поэтому проблема возникает при преобразовании объекта .net в JSON.

$json  = @'
{
  "stubs": [
    {
      "responses": [
        {
          "is": {
            "body": "54"
          }
        },
        {
          "is": {
            "body": "21"
          }
        },
        {
          "is": {
            "body": "0"
          }
        }
      ]
    }
  ]
}
'@
$json | ConvertFrom-Json | ConvertTo-Json

Результат приведенного выше преобразования такой:

{
  "stubs": [
    {
      "responses": "  "
    }
  ]
}

Если я запускаю это, я получаю 54 , как и ожидалось:

$json | ConvertFrom-Json | %{ $_.stubs.responses[0].is.body }  

Я работаю в Ubuntu, но не верю, что это должно иметь значение. Это должно быть легко проверить для кого-то в Windows.

1 Ответ

0 голосов
/ 17 ноября 2018

ConvertTo-Json принимает необязательный параметр Depth, который (по любой причине) по умолчанию равен 2. Сам параметр описан в связанных документах следующим образом:

Указывает, сколько уровней содержащихся объектов включено в представление JSON.Значение по умолчанию: 2.

Если вы укажете более высокое значение для этого параметра, он будет работать - значение максимум равно 100:

$json | ConvertFrom-Json | ConvertTo-Json -Depth 100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...