Compartir a través de


Test-Json

Comprueba si una cadena es un documento JSON válido

Sintaxis

__AllParameterSets (valor predeterminado)

Test-Json
    [-Json] <String>
    [<CommonParameters>]

SchemaString

Test-Json
    [-Json] <String>
    [[-Schema] <String>]
    [<CommonParameters>]

SchemaFile

Test-Json
    [-Json] <String>
    [-SchemaFile <String>]
    [<CommonParameters>]

Description

El cmdlet Test-Json comprueba si una cadena es un documento válido de notación de objetos JavaScript (JSON) y puede comprobar opcionalmente ese documento JSON en un esquema proporcionado.

A continuación, la cadena comprobada se puede usar con el cmdlet ConvertFrom-Json convertir una cadena con formato JSON en un objeto JSON, que se administra fácilmente en PowerShell o se envía a otro programa o servicio web que accede a la entrada JSON.

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

Este cmdlet se introdujo en PowerShell 6.1

Ejemplos

Ejemplo 1: Prueba si un objeto es json válido

En este ejemplo se comprueba si la cadena de entrada es un documento JSON válido.

'{"name": "Ashley", "age": 25}' | Test-Json
True

Ejemplo 2: Prueba de un objeto con un esquema proporcionado

En este ejemplo se toma una cadena que contiene un esquema JSON y se compara con una cadena de entrada.

$schema = @'
{
  "definitions": {},
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "http://example.com/root.json",
  "type": "object",
  "title": "The Root Schema",
  "required": [
    "name",
    "age"
  ],
  "properties": {
    "name": {
      "$id": "#/properties/name",
      "type": "string",
      "title": "The Name Schema",
      "default": "",
      "examples": [
        "Ashley"
      ],
      "pattern": "^(.*)$"
    },
    "age": {
      "$id": "#/properties/age",
      "type": "integer",
      "title": "The Age Schema",
      "default": 0,
      "examples": [
        25
      ]
    }
  }
}
'@
'{"name": "Ashley", "age": "25"}' | Test-Json -Schema $schema
Test-Json:
Line |
  35 |  '{"name": "Ashley", "age": "25"}' | Test-Json -Schema $schema
     |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~
     | IntegerExpected: #/age
False

En este ejemplo, se produce un error porque el esquema espera un entero para antigüedad, pero la entrada JSON que probamos usa un valor de cadena en su lugar.

Para obtener más información, consulte esquema JSON.

Ejemplo 3: Probar un objeto en un esquema del archivo

El esquema JSON puede hacer referencia a definiciones mediante $ref palabra clave. El $ref puede resolverse en un URI que hace referencia a otro archivo. El parámetro SchemaFile acepta la ruta de acceso literal al archivo de esquema JSON y permite validar los archivos JSON con dichos esquemas.

En este ejemplo, el archivo schema.json hace referencia a definitions.json.

Get-Content schema.json
{
  "description":"A person",
  "type":"object",
  "properties":{
    "name":{
      "$ref":"definitions.json#/definitions/name"
    },
    "hobbies":{
      "$ref":"definitions.json#/definitions/hobbies"
    }
  }
}
Get-Content definitions.json
{
  "definitions":{
    "name":{
      "type":"string"
    },
    "hobbies":{
      "type":"array",
      "items":{
        "type":"string"
      }
    }
  }
}
'{"name": "James", "hobbies": [".NET", "Blogging"]}' | Test-Json -SchemaFile 'schema.json'
True

Para obtener más información, vea Estructuración de un esquema complejo.

Parámetros

-Json

Especifica la cadena JSON que se va a probar para la validez. 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 Test-Json.

Se requiere el parámetro json.

Propiedades de parámetro

Tipo:String
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:1
Obligatorio:True
Valor de la canalización:True
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Schema

Especifica un esquema con el que validar la entrada JSON. Si se pasa, Test-Json valida que la entrada JSON se ajusta a la especificación especificada por el parámetro Schema de y devuelve $true solo si la entrada se ajusta al esquema proporcionado.

Para obtener más información, consulte esquema JSON.

Propiedades de parámetro

Tipo:String
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

SchemaString
Posición:2
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-SchemaFile

Especifica un archivo de esquema que se usa para validar la entrada JSON. Cuando se usa, el Test-Json devuelve $true solo si la entrada JSON se ajusta al esquema definido en el archivo especificado por el parámetro SchemaFile.

Para obtener más información, consulte esquema JSON.

Propiedades de parámetro

Tipo:String
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

SchemaFile
Posición:Named
Obligatorio:False
Valor de la canalización:False
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 canalizar una cadena JSON a este cmdlet.

Salidas

Boolean

Este cmdlet devuelve $true si el json es válido y, de lo contrario, $false.

Notas

El Test-Json cmdlet se implementa mediante la clase NJsonSchema.

Desde PowerShell 6, PowerShell usa los ensamblados Newtonsoft.Json para todas las funciones JSON. La implementación de Newtonsoft incluye varias extensiones para el estándar JSON, como la compatibilidad con comentarios y el uso de comillas simples. Para obtener una lista completa de las características, consulte la documentación de Newtonsoft en https://www.newtonsoft.com/json.