Définition du schéma JSON pour le tableau d'objets
J'ai vu cette autre question mais ce n'est pas tout à fait la même, et je pense que mon problème est plus simple, mais n'est tout simplement pas de travail.
Mes données devrait ressembler à ceci:
[
{ "loc": "a value 1", "toll" : null, "message" : "message is sometimes null"},
{ "loc": "a value 2", "toll" : "toll is sometimes null", "message" : null}
]
Je suis désireux d'utiliser La AJV JSON de validation dans un Node.js projet et j'ai essayé plusieurs schémas pour tenter de décrire mes données, mais je reçois toujours ce que l'erreur:
[ { keyword: 'type',
dataPath: '',
schemaPath: '#/type',
params: { type: 'array' },
message: 'should be array' } ]
Le schéma que j'ai essayé ressemble à ceci:
{
"type": "array",
"items": {
"type": "object",
"properties": {
"loc": {
"type": "string"
},
"toll": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"loc"
]
}
}
J'ai aussi essayé de générer le schéma à l'aide de cet outil en ligne mais qui ne fonctionne pas, et de vérifier que devrait sortir le résultat correct, j'ai essayé de valider cette sortie contre jsonschemavalidator.netmais qui me donne une erreur similaire:
Found 1 error(s)
Message:
Invalid type. Expected Array but got Object.
Schema path:
#/type
source d'informationauteur Kyle Falconer | 2016-04-21
Vous devez vous connecter pour publier un commentaire.
Vous avez défini votre schéma correctement, sauf qu'il ne correspond pas aux données que vous dites que vous êtes de la validation. Si vous modifiez la propriété noms correspondent au schéma, vous avez encore une question. Si vous voulez autoriser les "sans frais" et "message" est nul, vous pouvez effectuer les opérations suivantes.
Cependant, cela n'est pas lié au message d'erreur que vous obtenez. Ce message signifie que les données de la validation n'est pas un tableau. Les données de l'exemple que vous avez posté ne devrait pas entraîner dans cette erreur. Vous exécutez le programme de validation sur des données autres que ce qui est affiché dans la question?