Conversor de PowerShell a JSON
Pega una hashtable de PowerShell o un PSCustomObject. Obtén JSON de vuelta.
Qué hace esta herramienta
Si alguna vez copiaste una hashtable @{...} de un script de PowerShell y necesitabas el JSON equivalente — sin abrir una shell ni canalizar por ConvertTo-Json — para eso sirve esta herramienta. Pegas el PowerShell y recibes JSON limpio. Funciona para una sola hashtable, una instancia de [PSCustomObject] o una cadena completa de bloques @{} anidados con arrays dentro.
La salida coincide con lo que te daría ConvertTo-Json -Depth 100. Las hashtables y los [PSCustomObject] se convierten en objetos JSON. Los arrays (@(1,2,3)) se convierten en arrays JSON. $null pasa a null, $true/$false a booleanos JSON. Los valores DateTime se emiten como cadenas ISO-8601, la misma convención que usa PowerShell 7.
Las claves con espacios o caracteres especiales se mantienen entrecomilladas. Los literales numéricos (42, 3.14) siguen siendo números. Las cadenas entre comillas simples y dobles se analizan correctamente y las secuencias de escape entre comillas dobles (`n, `t) se resuelven. Si pegas varias asignaciones de nivel superior, cada una se convierte en una clave del JSON de salida, con el nombre de la variable.
Cómo usarla
Tres pasos. Funciona igual tanto si pegas una hashtable de dos claves como un bloque de configuración completo.
Pega tu PowerShell (o prueba el ejemplo)
Suelta el fragmento del script en el editor de la izquierda. Una hashtable, un [PSCustomObject], bloques @{} anidados o un array de objetos — todo vale. Cargar ejemplo muestra un caso realista de un pedido.
No hace falta que limpies nada — deja los prefijos $variable, los casts de [PSCustomObject] y los comentarios tal cual.
Pulsa Convertir
Haz clic en el botón verde Convertir. La herramienta parsea la hashtable, recorre cada estructura anidada y construye el JSON en una sola pasada.
Copia el JSON
El panel derecho se llena con JSON indentado. Pégalo en una plantilla ARM, un cuerpo de Invoke-RestMethod o un fixture JSON para un test de Pester.
Cuándo viene bien de verdad
Construir cuerpos de petición para APIs REST
Tienes una hashtable lista para enviar por <code>Invoke-RestMethod</code> y quieres verificar la forma del JSON primero. Pega, revisa, y a producción.
Convertir hashtables de configuración a archivos JSON
Un equipo usa archivos de configuración <code>.psd1</code>, pero un servicio nuevo espera JSON. Pega la hashtable y guarda la salida como <code>config.json</code>.
Archivos de parámetros ARM / Bicep
Los parámetros de plantilla ARM van en JSON, pero muchas veces los construyes primero como hashtables de PowerShell. Conviértelo una vez y sube el JSON al repo.
Alimentar herramientas aguas abajo
Los scripts de CI en PowerShell a menudo tienen que pasar datos estructurados a Python, Node o a un contenedor que espera JSON por stdin. Este es el traspaso.
Preguntas frecuentes
¿Coincide con la salida de ConvertTo-Json?
Sí — el objetivo es paridad con ConvertTo-Json -Depth 100 -Compress:$false. Las hashtables y los objetos [PSCustomObject] se convierten en objetos JSON; los arrays en arrays JSON; $null, $true, $false se mapean como siempre.
¿Qué pasa con [PSCustomObject] frente a una hashtable normal?
Los dos se convierten al mismo objeto JSON. [PSCustomObject] conserva el orden de las propiedades, cosa que esta herramienta respeta. Las hashtables normales se ordenan alfabéticamente por defecto — igual que ConvertTo-Json.
¿Puedo pegar un script entero?
Sí, pero solo las asignaciones de nivel superior $variable = @{...} y [PSCustomObject]@{...} aparecen en la salida. Las definiciones de funciones, el flujo de control y las llamadas a cmdlets se ignoran. Cada variable de nivel superior se convierte en una clave del JSON, con el nombre de la variable.
¿Cómo se manejan las fechas y los números?
Las salidas de [DateTime] y Get-Date se emiten como cadenas ISO-8601. Los literales numéricos (incluido [decimal]) se quedan como números JSON. Las fechas pegadas como cadenas crudas siguen siendo cadenas.
¿Se guarda mi código?
Tu código se envía al backend para convertirlo y no se persiste — no registramos el payload. Si la hashtable contiene secretos, redáctalos antes de pegar.
¿Soporta here-strings y valores de cadena multilínea?
Sí. Los here-strings @"..."@ y @'...'@ se preservan como cadenas JSON con la codificación de saltos de línea correcta.
Otras herramientas que quizá necesites
PowerShell a JSON encaja bien con el resto del kit: