¿Cómo escribir JSON en un archivo en PowerShell?
En este tutorial de PowerShell, explicaré cómo escribir JSON en un archivo en PowerShell.
Para escribir JSON en un archivo en PowerShell, puede usar el cmdlet ConvertTo-Json para convertir un objeto de PowerShell en una cadena JSON y luego generar esta cadena en un archivo usando Out. -Archivo o Establecer contenido. Por ejemplo:
$object | ConvertTo-Json | Set-Content -Path 'file.json'Este enfoque es sencillo y eficaz para la mayoría de los escenarios en los que es necesario guardar datos JSON de PowerShell en un archivo.
Método 1: ConvertTo-Json y Out-File
Para escribir JSON en un archivo en PowerShell, puede usar el cmdlet ConvertTo-Json, que convierte un objeto de PowerShell en una cadena con formato JSON. Una vez convertida, puede enviar la cadena a un archivo utilizando el cmdlet Out-File.
He aquí un ejemplo sencillo:
# Create a PowerShell object
$person = @{
FirstName = 'James'
LastName = 'Karley'
Age = 30
}
# Convert the object to a JSON string
$json = $person | ConvertTo-Json
# Write the JSON string to a file
$json | Out-File -FilePath 'C:\MyFolder\person.json'
Este script crea una tabla hash que representa a una persona, la convierte a JSON y la escribe en un archivo llamado person.json.
Puede ver el resultado en la captura de pantalla a continuación después de ejecutar el script usando el código VS.
Consulte ¿Cómo convertir JSON a CSV en PowerShell?
Método 2: ConvertTo-Json y Set-Content
Una alternativa a Out-File es el cmdlet Set-Content en PowerShell. Es particularmente útil cuando necesita asegurarse de que la codificación del archivo esté configurada correctamente, como UTF-8, que a menudo se requiere para datos JSON.
# Convert the object to a JSON string
$json = $person | ConvertTo-Json
# Write the JSON string to a file with UTF8 encoding
$json | Set-Content -Path 'person.json' -Encoding UTF8Este enfoque es similar al anterior pero especifica la codificación para evitar problemas con la representación de caracteres en el archivo JSON.
Método 3: usar Agregar contenido para agregar datos
Si necesita agregar datos JSON a un archivo existente en PowerShell, puede usar el cmdlet Add-Content. Esto es particularmente útil al registrar o agregar a una matriz JSON en un archivo.
# Additional person object
$additionalPerson = @{
FirstName = 'Jane'
LastName = 'Smith'
Age = 25
}
# Convert the additional person to JSON
$additionalJson = $additionalPerson | ConvertTo-Json
# Append the JSON string to the existing file
$additionalJson | Add-Content -Path 'C:\MyFolder\person.json'Este script agregará el contenido additionalJson al archivo people.json sin sobrescribir los datos existentes.
Puede ver el resultado en la captura de pantalla a continuación después de ejecutar el script de PowerShell usando el código VS.
Método 4: Export-Clixml para objetos complejos
Para objetos más complejos que pueden contener propiedades que ConvertTo-Json no puede procesar, puede utilizar Export-Clixml. Este cmdlet exporta objetos de PowerShell a un archivo XML, que se puede volver a leer con Import-Clixml.
# Export the object to an XML file
$person | Export-Clixml -Path 'person.clixml'Si bien no es estrictamente JSON, este método se incluye para que esté completo, ya que puede manejar datos serializados complejos que JSON podría no manejar.
Método 5: usar la biblioteca JSON.net
Para obtener un control total sobre el proceso de serialización JSON, puede utilizar la biblioteca Newtonsoft JSON.net. Esta biblioteca ofrece más funciones que los cmdlets integrados de PowerShell.
Primero, necesitas instalar la biblioteca:
# Install the Newtonsoft.Json library
Install-Package -Name Newtonsoft.JsonLuego, puedes usarlo para serializar y escribir los datos JSON:
# Load the Newtonsoft.Json assembly
Add-Type -Path 'C:\path\to\Newtonsoft.Json.dll'
# Serialize the object to JSON using JsonConvert
$json = [Newtonsoft.Json.JsonConvert]::SerializeObject($person)
# Write the JSON string to a file
Set-Content -Path 'person.json' -Value $json -Encoding UTF8Este método es particularmente útil cuando se trata de estructuras JSON complejas o cuando necesita personalizar el proceso de serialización más allá de lo que ofrece el cmdlet ConvertTo-Json.
Conclusión
PowerShell ofrece varias formas de escribir datos JSON en un archivo. Al utilizar el cmdlet ConvertTo-Json con Out-File o Set-Content, puede serializar y guardar fácilmente datos JSON. Para agregar datos, Add-Content es su cmdlet de referencia. Y para los escenarios más complejos, aprovechar la biblioteca JSON.net le brinda la flexibilidad y el poder para administrar la serialización JSON en PowerShell con precisión.
En este tutorial de PowerShell, he explicado cómo escribir JSON en un archivo en PowerShell usando diferentes métodos.

