/ / ConvertTo-Json aplana matrices en 3 niveles de profundidad [duplicado] - matrices, powershell

ConvertTo-Json aplana arrays en 3 niveles de profundidad [duplicado] - arrays, powershell

En PowerShell, lo siguiente produce resultados correctos.

$foo = @{}
$foo.bar = @{}
$foo.bar.buzz = @("herp","derp")
ConvertTo-Json $foo

{
"bar":  {
"buzz":  [
"herp",
"derp"
]
}
}

Sin embargo, si agrego un nivel más, la matriz "zumbido" se aplana en una cadena

$foo = @{}
$foo.bar = @{}
$foo.bar.buzz = @{}
$foo.bar.buzz.bazz = @("herp","derp")
ConvertTo-Json $foo

{
"bar":  {
"buzz":  {
"bazz": "herp derp"
}
}
}

¿Por qué powershell aplana Arrays en cadenas? Este problema se siente similar a las siguientes preguntas de SO, pero ninguna de las soluciones propuestas lo resuelve.

por qué-hace-powershell-silenciosamente-convierte-una-cadena-matriz-con-un-elemento-a-una-cadena

qué-determina-si-el-powershell-pipeline-will-desenrollar-una-colección

Respuestas

-1 para la respuesta № 1

De Documentación de ConvertTo-Json

-Profundidad

Especifica cuántos niveles de objetos contenidos se incluyen en el Representación JSON. El valor predeterminado es 2.

Añadiendo -Depth 9 opción a ConvertTo-Json arregla el problema

ConvertTo-Json -Depth 9 $foo

Además, hay una diferencia entre ConvertTo-Json $foo y $foo | ConvertTo-Json. Utilizar ConvertTo-Json $foo cuando sea posible.

convertto-json-an-array-with-a-single-item