Test-Json
Comprueba si una cadena es un documento JSON válido
Syntax
Test-Json
[-Json] <String>
[<CommonParameters>]
Test-Json
[-Json] <String>
[[-Schema] <String>]
[<CommonParameters>]
Test-Json
[-Json] <String>
[-SchemaFile <String>]
[<CommonParameters>]
Description
El Test-Json
cmdlet prueba si una cadena es un documento válido de notación de objetos JavaScript (JSON) y puede comprobar opcionalmente ese documento JSON con un esquema proporcionado.
A continuación, la cadena verificada se puede usar con el ConvertFrom-Json
cmdlet para 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 los datos para la comunicación entre servidores y aplicaciones 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 por 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
la palabra clave . $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 schema.json
archivo 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, consulte Estructuración de un esquema complejo.
Parámetros
-Json
Especifica la cadena JSON que se va a probar para comprobar la validez. Escriba una variable que contenga la cadena, o un comando o una expresión que obtengan la cadena. También puede canalizar una cadena a Test-Json
.
Se requiere el parámetro Json .
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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 y devuelve $true
solo si la entrada se ajusta al esquema proporcionado.
Para obtener más información, consulte Esquema JSON.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SchemaFile
Especifica un archivo de esquema usado para validar la entrada JSON. Cuando se usa, devuelve Test-Json
$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.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
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.