Escribir objeto JSON en un archivo en PowerShell

Migel Hewage Nimesha 31 mayo 2022
  1. Objetos personalizados de PowerShell
  2. Objeto JSON de PowerShell a cadena JSON
  3. Guardar cadena JSON en un archivo
Escribir objeto JSON en un archivo en PowerShell

PowerShell es un lenguaje basado en objetos muy poderoso que se puede usar para crear datos estructurados. Por lo tanto, es más fácil trabajar con él que con texto sin formato.

Objetos personalizados de PowerShell

El PSCustomObject es la base para los objetos de PowerShell. Contiene propiedades y valores.

Por lo tanto, PowerShell también puede manejar objetos JSON.

Vamos a crear un objeto personalizado JSON a partir de un JSON de ejemplo. Hemos asignado un JSON a la variable $MyJsonVar.

$MyJsonVar = @"
 {
   "ExampleJson":{
     "Fruit1":{
       "Name":"Apple",
       "Price":"`$10.00"
     }
  }
 }
"@

Producción:

Objetos personalizados de PowerShell 1

Necesitamos crear el objeto JSON real usando el cmdlet ConvertFrom-JSON. Esto creará el PSCustomObject real.

Asignemos el objeto JSON recién creado a la variable $MyJsonObject.

$MyJsonObject = $MyJsonVar | ConvertFrom-Json

Vamos a mostrar el PSCustomObject recién creado, un objeto JSON.

$MyJsonObject

Producción:

Objetos personalizados de PowerShell 2

Puede acceder al objeto JSON por sus propiedades.

$MyJsonObject.ExampleJson.Fruit1.Price
$MyJsonObject.ExampleJson.Fruit1.Name

Producción:

Objetos personalizados de PowerShell 3

Entonces, se ha confirmado que obtuvimos un objeto personalizado de PowerShell adecuado llamado $MyJsonObject.

Objeto JSON de PowerShell a cadena JSON

El cmdlet ConvertTo-Json puede convertir un objeto personalizado existente en una cadena JSON. Esto va a ser texto sin formato en formato JSON.

Sintaxis:

ConvertTo-Json
              [-InputObject] <Object>
              [-Depth <Int32>]
              [-Compress]
              [-EnumsAsStrings]
              [-AsArray]
              [-EscapeHandling <StringEscapeHandling>]
              [<CommonParameters>]

Todos los parámetros anteriores son opcionales para el cmdlet ConvertTo-Json.

El parámetro -Depth puede especificar el número de niveles en la cadena JSON. Es un parámetro importante y debe usarse con mucho cuidado.

El uso incorrecto de este parámetro puede causar una pérdida de datos. El valor predeterminado es 2.

El parámetro -InputObject especifica el objeto personalizado que debe convertirse en una cadena JSON. Podemos canalizar un objeto personalizado al cmdlet ConvertTo-Json fácilmente.

Podemos enviar el $MyJsonObject a través de la tubería (|) para transformar el objeto personalizado en una cadena JSON.

$MyJsonObject | ConvertTo-Json

Producción:

Objeto JSON a cadena JSON

Guardar cadena JSON en un archivo

Es posible guardar una cadena JSON en un archivo usando PowerShell. Podemos canalizar la salida de la cadena JSON al cmdlet Out-File.

Es posible especificar la ruta donde necesitamos crear el archivo .json.

$MyJsonObject | ConvertTo-Json | Out-File "D:\misc\example.json"

La ruta "D\misc\example.json" puede variar. Esto creará un archivo example.json dentro de la estructura de directorio dada.

Producción:

Guardar cadena JSON en un archivo

El objeto personalizado JSON se ha guardado en un archivo example.json en formato JSON.

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

Artículo relacionado - PowerShell JSON