Definição do esquema JSON para a lista de objectos

Já vi esta outra pergunta, mas não é a mesma coisa, e sinto que a minha questão é mais simples, mas não está a funcionar.

Os meus dados seriam assim:
[
    { "loc": "a value 1", "toll" : null, "message" : "message is sometimes null"},
    { "loc": "a value 2", "toll" : "toll is sometimes null", "message" : null}
]

quero usarO AJV para a validação do JSON num nó.js project e eu tentamos vários esquemas para tentar descrever os meus dados, mas eu sempre entendo isso como o erro:

[ { keyword: 'type',
    dataPath: '',
    schemaPath: '#/type',
    params: { type: 'array' },
    message: 'should be array' } ]
O esquema que tentei é parecido com este:
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "loc": {
        "type": "string"
      },
      "toll": {
        "type": "string"
      },
      "message": {
        "type": "string"
      }
    },
    "required": [
      "loc"
    ]
  }
}
Também tentei gerar o esquema usando esta ferramenta online, mas que também não funciona, e para verificar que devem saída o resultado correto, eu tentei validar que a saída contra jsonschemavalidator.net, mas que também me dá um erro semelhante:

Found 1 error(s)
 Message:
 Invalid type. Expected Array but got Object.
 Schema path:
 #/type
Author: Community, 2016-04-21

1 answers

Você definiu o seu esquema correctamente, excepto que não corresponde aos dados que diz que está a validar. Se você mudar os nomes da propriedade para combinar com o esquema, você ainda tem um problema. Se você quiser permitir que" toll "e" message " sejam nulos, você pode fazer o seguinte.

{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "loc": {
        "type": "string"
      },
      "toll": {
        "type": ["string", "null"]
      },
      "message": {
        "type": ["string", "null"]
      }
    },
    "required": [
      "loc"
    ]
  }
}
No entanto, isso não está relacionado com a mensagem de erro que você está recebendo. Essa mensagem significa que os dados que você está validando não são um array. Os dados de exemplo que você postou não devem resultar neste erro. Sao você está executando o validador em alguns dados além do que é publicado na pergunta?
 31
Author: Jason Desrosiers, 2016-04-21 02:03:38