在javascript中验证json对模式

8 javascript schema json ecmascript-6

题:

是否有一种简单或本机的JavaScript方法来验证JSON模式的JSON脚本?

我在Github上发现了很多库,但没有原生/普通的解决方案.EcmaScript没有这方面的规范吗?什么浏览器(或nodejs)都没有办法本机验证JSON?

问题背景:

我开发了一个非常复杂的模式.它应该与一个脚本一起工作,该脚本要求传入JSON数据以符合模式.

Nic*_*ull 6

简单地说,不。

有一种叫做JSON Schema的东西,它是Internet草案,于2013年到期。Internet草案是产生Internet Standard的第一步。尽管它尚未(据我所知)被广泛使用,但仍可以在官方网站上查看有关它的更多信息,因为它似乎仍有可能被积极开发。

模式的示例:

{
  "$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"
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

将验证此示例JSON:

{
  "id": 1,
  "name": "Foo",
  "price": 123,
  "tags": [
    "Bar",
    "Eek"
  ],
  "stock": {
    "warehouse": 300,
    "retail": 20
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑由于它们(或多或少)都执行相同的操作并且具有非常相似的语法,因此性能应该是最大的问题。请参阅此处以比较JSON验证程序的性能-获胜者是ajv,这就是我个人出于这个原因所使用的。

  • 那么,如果我想验证JSON怎么办? (2认同)

Joe*_*ele 5

现在似乎至少有一种纯 JS 解决方案(https://github.com/tdegrunt/jsonschema)可通过 npm(https://www.npmjs.com/package/jsonschema)获得。我不是贡献者,尽管我很欣赏他们的工作。