私はこれを見ました 他の質問 が、それはまったく同じではなく、私の問題はより単純であるが、機能していないように感じます。
私のデータは次のようになります。
[
{ "loc": "a value 1", "toll" : null, "message" : "message is sometimes null"},
{ "loc": "a value 2", "toll" : "toll is sometimes null", "message" : null}
]
Node.jsプロジェクトのJSON検証に [〜#〜] ajv [〜#〜] を使用したいので、いくつか試してみましたスキーマを使用してデータを記述しようとしますが、常にこれをエラーとして取得します:
[ { keyword: 'type',
dataPath: '',
schemaPath: '#/type',
params: { type: 'array' },
message: 'should be array' } ]
私が試したスキーマは次のようになります。
{
"type": "array",
"items": {
"type": "object",
"properties": {
"loc": {
"type": "string"
},
"toll": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"loc"
]
}
}
また、 このオンラインツール を使用してスキーマを生成しようとしましたが、これも機能せず、正しい結果が出力されることを確認しました。私はその出力を jsonschemavalidator.net に対して検証しようとしましたが、それは私にも同様のエラーを与えます:
Found 1 error(s)
Message:
Invalid type. Expected Array but got Object.
Schema path:
#/type
検証するデータと一致しないことを除き、スキーマを正しく定義しました。スキーマに一致するようにプロパティ名を変更しても、まだ1つの問題があります。 「toll」と「message」をnullにしたい場合は、次のことができます。
{
"type": "array",
"items": {
"type": "object",
"properties": {
"loc": {
"type": "string"
},
"toll": {
"type": ["string", "null"]
},
"message": {
"type": ["string", "null"]
}
},
"required": [
"loc"
]
}
}
ただし、これは表示されるエラーメッセージとは関係ありません。そのメッセージは、検証しているデータが配列ではないことを意味します。投稿したサンプルデータは、このエラーになりません。質問に投稿されたもの以外のデータでバリデーターを実行していますか?