ConvertFrom-Json
Convierte una cadena con formato JSON en un objeto personalizado.
Sintaxis
Default (valor predeterminado)
ConvertFrom-Json
[-InputObject] <String>
[<CommonParameters>]
Description
El cmdlet ConvertFrom-Json convierte una cadena en formato JSON (JavaScript Object Notation) en un PSObject personalizado o en un objeto Hashtable con una propiedad para cada campo en la cadena JSON.
Los sitios web suelen usar JSON para proporcionar una representación textual de los objetos. El cmdlet agrega las propiedades al nuevo objeto a medida que procesa cada línea de la cadena JSON.
El estándar JSON permite nombres de clave duplicados, que están prohibidos en los tipos PSObject y Hashtable. Por ejemplo, si la cadena JSON contiene claves duplicadas, este cmdlet usa solo la última clave. Vea otros ejemplos a continuación.
Para generar una cadena JSON a partir de cualquier objeto, use el cmdlet ConvertTo-Json.
Este cmdlet se introdujo en PowerShell 3.0.
Nota:
En Windows PowerShell 5.1, ConvertFrom-Json devuelve un error cuando encuentra un comentario JSON. En PowerShell 6 y versiones posteriores, el cmdlet admite JSON con comentarios. Los comentarios JSON no se capturan en la salida de los objetos por el cmdlet. Para obtener más información, consulte la sección comentarios JSON del artículo about_Comments.
Ejemplos
Ejemplo 1: Convertir un objeto DateTime en un objeto JSON
Este comando usa los cmdlets ConvertTo-Json y ConvertFrom-Json para convertir un objeto DateTime del cmdlet Get-Date a un objeto JSON y, a continuación, a un PSCustomObject.
Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json
DisplayHint : 2
DateTime : Friday, January 13, 2012 8:06:31 PM
Date : 1/13/2012 8:00:00 AM
Day : 13
DayOfWeek : 5
DayOfYear : 13
Hour : 20
Kind : 2
Millisecond : 400
Minute : 6
Month : 1
Second : 31
Ticks : 634620819914009002
TimeOfDay : @{Ticks=723914009002; Days=0; Hours=20; Milliseconds=400; Minutes=6; Seconds=31; TotalDays=0.83786343634490734; TotalHours=20.108722472277776; TotalMilliseconds=72391400.900200009; TotalMinutes=1206.5233483366667;TotalSeconds=72391.4009002}
Year : 2012
En el ejemplo se usa el cmdlet Select-Object para obtener todas las propiedades del objeto DateTime. Usa el cmdlet ConvertTo-Json para convertir el objeto DateTime en una cadena con formato JSON y el cmdlet ConvertFrom-Json para convertir la cadena con formato JSON en un objeto PSCustomObject.
Ejemplo 2: Obtención de cadenas JSON de un servicio web y conversión a objetos de PowerShell
Este comando usa el cmdlet Invoke-WebRequest para obtener cadenas JSON de un servicio web y, a continuación, usa el cmdlet ConvertFrom-Json para convertir contenido JSON en objetos que se pueden administrar en PowerShell.
# Ensures that Invoke-WebRequest uses TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$j = Invoke-WebRequest 'https://api.github.com/repos/PowerShell/PowerShell/issues' | ConvertFrom-Json
También puede usar el cmdlet Invoke-RestMethod, que convierte automáticamente el contenido JSON en objetos.
Ejemplo 3: Conversión de una cadena JSON en un objeto personalizado
En este ejemplo se muestra cómo usar el cmdlet ConvertFrom-Json para convertir un archivo JSON en un objeto personalizado de PowerShell.
Get-Content -Raw JsonFile.json | ConvertFrom-Json
El comando usa Get-Content cmdlet para obtener las cadenas en un archivo JSON. El parámetro Raw devuelve todo el archivo como un único objeto JSON. A continuación, usa el operador de canalización para enviar la cadena delimitada al cmdlet ConvertFrom-Json, que lo convierte en un objeto personalizado.
Parámetros
-InputObject
Especifica las cadenas JSON que se van a convertir en objetos JSON. Escriba una variable que contenga la cadena o escriba un comando o expresión que obtenga la cadena. También puede canalizar una cadena a ConvertFrom-Json.
Se requiere el parámetro InputObject, pero su valor puede ser una cadena vacía. Cuando el objeto de entrada es una cadena vacía, ConvertFrom-Json no genera ninguna salida. El valor de InputObject no puede ser $null.
Propiedades de parámetro
| Tipo: | String |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | 0 |
| Obligatorio: | True |
| Valor de la canalización: | True |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
CommonParameters
Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.
Entradas
String
Puede redirigir una cadena JSON a ConvertFrom-Json.
Salidas
PSCustomObject
Notas
El cmdlet ConvertFrom-Json se implementa mediante la clase JavaScriptSerializer.
El tipo PSObject mantiene el orden de las propiedades tal como se muestra en la cadena JSON. Aunque los pares clave-valor se agregan al Hashtable en el orden presentado en la cadena JSON, los objetos Hashtable no mantienen ese orden.