online - Definición de esquema JSON para matriz de objetos
json schema java (1)
He visto esta otra pregunta, pero no es lo mismo, y siento que mi problema es más simple, pero simplemente no funciona.
Mis datos se verían así:
[
{ "loc": "a value 1", "toll" : null, "message" : "message is sometimes null"},
{ "loc": "a value 2", "toll" : "toll is sometimes null", "message" : null}
]
Quiero usar AJV para la validación JSON en un proyecto Node.js y he intentado varios esquemas para tratar de describir mis datos, pero siempre recibo esto como el error:
[ { keyword: ''type'',
dataPath: '''',
schemaPath: ''#/type'',
params: { type: ''array'' },
message: ''should be array'' } ]
El esquema que he probado se ve así:
{
"type": "array",
"items": {
"type": "object",
"properties": {
"loc": {
"type": "string"
},
"toll": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"loc"
]
}
}
También traté de generar el esquema usando esta herramienta en línea, pero eso tampoco funciona, y para verificar que eso produzca el resultado correcto, he intentado validar esa salida contra jsonschemavalidator.net , pero eso también me da un error similar:
Found 1 error(s)
Message:
Invalid type. Expected Array but got Object.
Schema path:
#/type
Ha definido su esquema correctamente, excepto que no coincide con los datos que dice que está validando. Si cambia los nombres de propiedad para que coincidan con el esquema, todavía tiene un problema. Si desea permitir que "toll" y "message" sean nulos, puede hacer lo siguiente.
{
"type": "array",
"items": {
"type": "object",
"properties": {
"loc": {
"type": "string"
},
"toll": {
"type": ["string", "null"]
},
"message": {
"type": ["string", "null"]
}
},
"required": [
"loc"
]
}
}
Sin embargo, eso no está relacionado con el mensaje de error que está recibiendo. Ese mensaje significa que los datos que está validando no son una matriz. Los datos de ejemplo que publicaste no deberían dar lugar a este error. ¿Está ejecutando el validador en algunos datos distintos de los que se publican en la pregunta?