Compartir a través de


ConvertTo-Json

Convierte un objeto en una cadena con formato JSON.

Sintaxis

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

Description

El cmdlet ConvertTo-Json convierte cualquier objeto .NET en una cadena en formato de notación de objetos JavaScript (JSON). Las propiedades se convierten en nombres de campo, los valores de campo se convierten en valores de propiedad y se quitan los métodos.

Nota

A partir de PowerShell 7.2, las propiedades del sistema de tipos extendidos de dateTime y objetos String ya no se serializan y solo el objeto simple se convierte en formato JSON.

A continuación, puede usar el cmdlet ConvertFrom-Json para convertir una cadena con formato JSON en un objeto JSON, que se administra fácilmente en PowerShell.

Muchos sitios web usan JSON en lugar de XML para serializar datos para la comunicación entre servidores y aplicaciones basadas en web.

A partir de PowerShell 7.1, ConvertTo-Json emite una advertencia si la profundidad del objeto de entrada supera la profundidad especificada para el comando. Esto evita la pérdida de datos no deseados al convertir objetos.

A partir de PowerShell 7.5-preview.3, ConvertTo-Json puede serializar valores de BigInteger como números JSON sin formato.

Este cmdlet se introdujo en Windows PowerShell 3.0.

Ejemplos

Ejemplo 1

(Get-UICulture).Calendar | ConvertTo-Json

{
  "MinSupportedDateTime": "0001-01-01T00:00:00",
  "MaxSupportedDateTime": "9999-12-31T23:59:59.9999999",
  "AlgorithmType": 1,
  "CalendarType": 1,
  "Eras": [
    1
  ],
  "TwoDigitYearMax": 2029,
  "IsReadOnly": true
}

Este comando usa el cmdlet ConvertTo-Json para convertir un objeto GregorianoCalendar en una cadena con formato JSON.

Ejemplo 2

Get-Date | ConvertTo-Json; Get-Date | ConvertTo-Json -AsArray

"2021-08-05T16:13:05.6394416-07:00"
[
  "2021-08-05T16:13:05.6421709-07:00"
]

En este ejemplo se muestra la salida del cmdlet ConvertTo-Json con y sin el parámetro de modificador de AsArray. Puede ver que la segunda parte de la salida está ajustada entre corchetes de matriz.

Ejemplo 3

@{Account="User01";Domain="Domain01";Admin="True"} | ConvertTo-Json -Compress

{"Domain":"Domain01","Account":"User01","Admin":"True"}

Este comando muestra el efecto de usar el parámetro Comprimir de ConvertTo-Json. La compresión afecta solo a la apariencia de la cadena, no a su validez.

Ejemplo 4

Get-Date | Select-Object -Property * | ConvertTo-Json

{
  "DisplayHint": 2,
  "DateTime": "October 12, 2018 10:55:32 PM",
  "Date": "2018-10-12T00:00:00-05:00",
  "Day": 12,
  "DayOfWeek": 5,
  "DayOfYear": 285,
  "Hour": 22,
  "Kind": 2,
  "Millisecond": 639,
  "Minute": 55,
  "Month": 10,
  "Second": 32,
  "Ticks": 636749817326397744,
  "TimeOfDay": {
    "Ticks": 825326397744,
    "Days": 0,
    "Hours": 22,
    "Milliseconds": 639,
    "Minutes": 55,
    "Seconds": 32,
    "TotalDays": 0.95523888627777775,
    "TotalHours": 22.925733270666665,
    "TotalMilliseconds": 82532639.774400011,
    "TotalMinutes": 1375.54399624,
    "TotalSeconds": 82532.6397744
  },
  "Year": 2018
}

En este ejemplo se usa el cmdlet ConvertTo-Json para convertir un objeto System.DateTime del cmdlet Get-Date a una cadena con formato JSON. El comando usa el cmdlet Select-Object para obtener todos (*) de las propiedades del objeto DateTime. La salida muestra la cadena JSON que ConvertTo-Json devuelto.

Ejemplo 5

Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json

DisplayHint : 2
DateTime    : October 12, 2018 10:55:52 PM
Date        : 2018-10-12 12:00:00 AM
Day         : 12
DayOfWeek   : 5
DayOfYear   : 285
Hour        : 22
Kind        : 2
Millisecond : 768
Minute      : 55
Month       : 10
Second      : 52
Ticks       : 636749817527683372
TimeOfDay   : @{Ticks=825527683372; Days=0; Hours=22; Milliseconds=768; Minutes=55; Seconds=52;
              TotalDays=0.95547185575463; TotalHours=22.9313245381111; TotalMilliseconds=82552768.3372;
              TotalMinutes=1375.87947228667; TotalSeconds=82552.7683372}
Year        : 2018

En este ejemplo se muestra cómo usar los cmdlets ConvertTo-Json y ConvertFrom-Json para convertir un objeto en una cadena JSON y un objeto JSON.

Parámetros

-AsArray

Genera el objeto entre corchetes de matriz, incluso si la entrada es un solo objeto.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Compress

Omite el espacio en blanco y el formato con sangría en la cadena de salida.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Depth

Especifica cuántos niveles de objetos contenidos se incluyen en la representación JSON. El valor puede ser cualquier número de 0 a 100. El valor predeterminado es 2. ConvertTo-Json emite una advertencia si el número de niveles de un objeto de entrada supera este número.

Tipo:Int32
Posición:Named
Valor predeterminado:2
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-EnumsAsStrings

Proporciona una opción de serialización alternativa que convierte todas las enumeraciones en su representación de cadena.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-EscapeHandling

Controla cómo se escapan determinados caracteres en la salida JSON resultante. De forma predeterminada, solo se pueden escape los caracteres de control (como la nueva línea).

Los valores aceptables son:

  • Valor predeterminado: solo se escapan los caracteres de control.
  • EscapeNonAscii: todos los caracteres que no sean ASCII y de control se escapen.
  • EscapeHtml: HTML (<, >, &, ', ") y los caracteres de control se escapan.

Este parámetro se introdujo en PowerShell 6.2.

Tipo:Newtonsoft.Json.StringEscapeHandling
Posición:Named
Valor predeterminado:Default
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-InputObject

Especifica los objetos que se van a convertir en formato JSON. Escriba una variable que contenga los objetos, o escriba un comando o expresión que obtenga los objetos. También puede canalizar un objeto para ConvertTo-Json.

Se requiere el parámetro InputObject, pero su valor puede ser NULL ($null) o una cadena vacía. Cuando el objeto de entrada se $null, ConvertTo-Json devuelve la representación JSON de null. Cuando el objeto de entrada es una cadena vacía, ConvertTo-Json devuelve la representación JSON de una cadena vacía.

Tipo:Object
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

Entradas

Object

Puede canalizar cualquier objeto a este cmdlet.

Salidas

String

Este cmdlet devuelve una cadena que representa el objeto de entrada convertido en una cadena JSON.

Notas

El cmdlet ConvertTo-Json se implementa mediante Newtonsoft Json.NET.