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 № 1De 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