質問:
JSONスキーマに対してJSONスクリプトを検証するプレーンまたはネイティブのJavaScriptの方法はありますか?
Githubでたくさんのライブラリを見つけましたが、ネイティブ/プレーンなソリューションはありません。 EcmaScriptにはこれに関する仕様がありませんか?そして、どのブラウザー(またはnodejs)にもJSONをネイティブに検証する方法がありませんか?
質問のコンテキスト:
私が開発した非常に複雑なスキーマがあります。スキーマに準拠するために渡されるJSONデータを必要とするスクリプトと一緒に機能することになっています。
単純に、いいえ。
JSON Schema というものがありました。これは2013年に期限切れになったインターネットドラフトでした。インターネットドラフトは インターネット標準 を作成するための最初の段階です。詳細については、 公式サイト を参照してください。これは、(私の知る限りでは)広く使用されていませんが、まだ活発に開発されている可能性があるためです。
スキーマの例:
{
"$schema": "http://json-schema.org/schema#",
"title": "Product",
"type": "object",
"required": ["id", "name", "price"],
"properties": {
"id": {
"type": "number",
"description": "Product identifier"
},
"name": {
"type": "string",
"description": "Name of the product"
},
"price": {
"type": "number",
"minimum": 0
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"stock": {
"type": "object",
"properties": {
"warehouse": {
"type": "number"
},
"retail": {
"type": "number"
}
}
}
}
}
このサンプルJSONを検証します:
{
"id": 1,
"name": "Foo",
"price": 123,
"tags": [
"Bar",
"Eek"
],
"stock": {
"warehouse": 300,
"retail": 20
}
}
[〜#〜] edit [〜#〜]これらはすべて(多かれ少なかれ)同じことを行い、構文が非常に似ているため、パフォーマンスは次のようになります。最大の懸念の。 JSONバリデーターのパフォーマンスの比較については here を参照してください-勝者は ajv であり、これは私がこの理由で個人的に使用しているものです。