Pide tu presupuesto ya!

Cómo trabajar con JSON en PowerShell: una guía práctica

Como administrador de sistemas Windows, trabajar con datos JSON (JavaScript Object Notation) se está convirtiendo cada vez más en una habilidad crucial. Ya sea que esté analizando archivos de configuración, interactuando con API REST o administrando datos de aplicaciones, saber cómo manejar JSON de manera eficiente en PowerShell puede ahorrarle horas de trabajo. En este tutorial práctico, le mostraré el lado práctico de trabajar con JSON en PowerShell.

Requisitos previos

Antes de sumergirte, asegúrate de tener:

  • PowerShell 5.1 o superior instalado (todos los ejemplos usan PowerShell 7)
  • Familiaridad básica con los cmdlets y canalizaciones de PowerShell.
  • Un editor de texto de su elección (usaré VS Code)

Leer archivos JSON en PowerShell

Comencemos con un ejemplo básico. Digamos que tienes un archivo JSON llamado People.json que contiene información sobre varias personas:

[
  {
    "Name": "John Smith",
    "Age": 30,
    "City": "New York"
  },
  {
    "Name": "Jane Doe",
    "Age": 25,
    "City": "Los Angeles"
  }
]

Para leer este archivo JSON en PowerShell, usamos una combinación de Get-Content y ConvertFrom-Json:

$people = Get-Content -Path ~\People.json | ConvertFrom-Json
$people

La magia ocurre en el ConvertFrom-Json cmdlet: transforma el texto JSON sin formato en objetos de PowerShell con los que puede trabajar fácilmente. Cuando ejecuta este comando, PowerShell muestra los datos en un formato estructurado:

Manipulación de datos JSON

Una de las mejores partes de convertir JSON a objetos de PowerShell es que puede manipular los datos como cualquier otro objeto de PowerShell. Aquí se explica cómo modificar los valores:

# Change the city of the first person
$people[0].City = 'Chicago'

# View the changed object
$people[0]

El verdadero poder surge cuando necesitas filtrar o transformar los datos. Por ejemplo, para buscar a todas las personas mayores de 25 años:

$people | Where-Object { $_.Age -gt 25 }

Esto es MUCHO más sencillo que intentar analizar el JSON directamente con expresiones regulares, lo que se parecería a esta monstruosidad:

$regexPattern = '({[^}]"Age"\s:\s(?:[2-9][6-9]|[3-9][0-9]|[1-9][0-9]{2,})[^}]})'
$matches = [regex]::Matches($jsonFromFile, $regexPattern)

Créame, ¡no querrá seguir ese camino a menos que sea absolutamente necesario!

Guardar datos JSON modificados

Después de realizar cambios en sus datos, probablemente desee guardarlos nuevamente en un archivo. A continuación se explica cómo convertir objetos de PowerShell nuevamente a JSON:

$people | ConvertTo-Json | Set-Content -Path ~\UpdatedPeople.json

Este oleoducto:

  1. Toma tus objetos de PowerShell ($personas)
  2. Los convierte nuevamente al formato JSON (ConvertTo-Json)
  3. Guarda el JSON en un archivo nuevo (Set-Content)

Para verificar los cambios, puede leer el nuevo archivo:

Get-Content -Path ~\UpdatedPeople.json

Errores comunes que se deben evitar

  1. Problemas de codificación: Si ve caracteres extraños en su JSON, asegúrese de utilizar la codificación correcta al leer/escribir archivos
  2. Limitaciones de profundidad: De forma predeterminada, `ConvertTo-Json` solo convierte 2 niveles de profundidad. Utilice el parámetro `-Depth` para objetos más profundos
  3. Personajes especiales: Tenga cuidado con los caracteres especiales en las cadenas JSON: necesitan un escape adecuado

Conclusión

Trabajar con JSON en PowerShell no tiene por qué ser complicado. Aprovechando cmdlets integrados como ConvertFrom-Json y ConvertTo-Jsonpuede leer, manipular y escribir datos JSON fácilmente sin tener que lidiar con expresiones regulares complejas o manipulación de cadenas.

La próxima vez que necesite trabajar con datos JSON en sus scripts de PowerShell, recuerde este sencillo flujo de trabajo:

  1. Leer el archivo JSON con Get-Content
  2. Conviértalo en objetos de PowerShell con ConvertFrom-Json
  3. Manipular los datos utilizando comandos estándar de PowerShell
  4. Guarde los cambios usando ConvertTo-Json y Set-Content

¿Ha encontrado otras técnicas útiles para trabajar con JSON en PowerShell? ¡Comparte tus experiencias en los comentarios a continuación!

Written by

Leave a comment