Volver a la página principal
lunes 7 octubre 2024
30

Cómo trabajar con JSON en PowerShell

Los comandos ConvertTo-Json y ConvertFrom-Json en PowerShell se utilizan para convertir datos a formato JSON y para parsear (analizar) estructuras JSON en objetos de PowerShell. Son útiles cuando se trabaja con APIs, archivos de configuración o cuando se necesita convertir datos para su intercambio entre sistemas.

¿Qué son y cómo usar ConvertTo-Json y ConvertFrom-Json en PowerShell?

  • ConvertTo-Json: Convierte objetos de PowerShell (como hash tables, arreglos o listas) en cadenas JSON para facilitar su almacenamiento o transmisión a servicios que requieran este formato.
  • ConvertFrom-Json: Convierte una cadena JSON en objetos de PowerShell, permitiendo acceder a las propiedades y valores para su manipulación y análisis.

Estos comandos son esenciales para trabajar con servicios web RESTful y procesar datos en PowerShell usando el formato de intercambio estándar JSON.

Sintaxis básica de ConvertTo-Json

ConvertTo-Json -InputObject <Objeto>

Sintaxis básica de ConvertFrom-Json

ConvertFrom-Json -InputObject <CadenaJSON>

Ejemplos de uso de ConvertTo-Json y ConvertFrom-Json

1. Convertir un objeto de PowerShell a formato JSON

$persona = @{
    Nombre = "Juan"
    Edad = 30
    Ciudad = "Madrid"
}

$personaJson = $persona | ConvertTo-Json
$personaJson

Salida:

{
  "Nombre": "Juan",
  "Edad": 30,
  "Ciudad": "Madrid"
}

Este ejemplo convierte un hash table de PowerShell en una cadena JSON para su almacenamiento o transmisión.

2. Convertir una cadena JSON en un objeto de PowerShell

$json = '{
  "Nombre": "Ana",
  "Edad": 25,
  "Ciudad": "Barcelona"
}'

$personaObj = $json | ConvertFrom-Json
$personaObj.Nombre

Salida:

Ana

Aquí, ConvertFrom-Json transforma la cadena JSON en un objeto de PowerShell, y se puede acceder a la propiedad Nombre de forma directa.

3. Trabajar con estructuras JSON complejas

$empresa = @{
    Nombre = "Tech Solutions"
    Empleados = @(
        @{Nombre = "Luis"; Cargo = "Desarrollador"}
        @{Nombre = "Maria"; Cargo = "Analista"}
    )
}

$empresaJson = $empresa | ConvertTo-Json
$empresaJson

Salida:

{
  "Nombre": "Tech Solutions",
  "Empleados": [
    {
      "Nombre": "Luis",
      "Cargo": "Desarrollador"
    },
    {
      "Nombre": "Maria",
      "Cargo": "Analista"
    }
  ]
}

Este ejemplo convierte un objeto con arreglos y propiedades anidadas a formato JSON, ideal para almacenar estructuras complejas.

4. Parsear un JSON y acceder a propiedades anidadas

$json = '{
  "Empresa": "Soluciones IT",
  "Departamentos": [
    {"Nombre": "Desarrollo", "Empleados": 20},
    {"Nombre": "Soporte", "Empleados": 15}
  ]
}'

$datos = $json | ConvertFrom-Json
$datos.Departamentos | ForEach-Object { $_.Nombre }

Salida:

Desarrollo
Soporte

Este ejemplo convierte un JSON con propiedades anidadas en un objeto y luego accede a los nombres de cada departamento.

5. Convertir un objeto JSON a su forma compacta o jerárquica

$persona = @{
    Nombre = "Carlos"
    Edad = 28
    Dirección = @{
        Calle = "Calle Falsa 123"
        Ciudad = "Valencia"
    }
}

# Convertir a JSON jerárquico
$persona | ConvertTo-Json -Depth 3

El parámetro -Depth controla cuán profunda es la conversión en estructuras complejas (por defecto es -Depth 2).

Referencia oficial

Puedes consultar más detalles sobre ConvertTo-Json y ConvertFrom-Json en la documentación oficial de Microsoft.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer