Почему ConvertTo-Json сбрасывает значения
Я использую 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 ответ
ConvertTo-Json
принимает необязательный Depth
параметр, который (по какой-либо причине) по умолчанию равен 2. Сам параметр описан в связанных документах следующим образом:
Указывает, сколько уровней содержащихся объектов включено в представление JSON. Значением по умолчанию является 2.
Если вы укажете более высокое значение для этого параметра, он будет работать - максимальное значение равно 100:
$json | ConvertFrom-Json | ConvertTo-Json -Depth 100