【问题标题】:validate json against schema in javascript根据 javascript 中的模式验证 json
【发布时间】:2016-12-20 13:24:22
【问题描述】:

问题:

是否有一种普通的或原生的 javascript 方法来根据 JSON 模式验证 JSON 脚本?

我在 Github 上找到了很多库,但没有原生/简单的解决方案。 EcmaScript 没有这方面的规范吗?并且没有浏览器(或 nodejs)有办法在本地验证 JSON 吗?

问题背景:

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

【问题讨论】:

    标签: javascript json ecmascript-6 schema


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      简单地说,不。

      有一个叫做JSON Schema的东西,它是一个2013年到期的互联网草案。互联网草案是产生Internet Standard的第一阶段。在official site 上查看更多信息,因为它似乎仍在积极开发中,尽管它(据我所知)并未广泛使用。

      架构示例:

      {
        "$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
        }
      }
      

      编辑 因为它们都(或多或少)做同样的事情并且具有非常相似的语法,所以性能应该是最大的关注点。请参阅 here 以比较 JSON 验证器的性能 - 获胜者是 ajv,这是我个人使用的原因。

      【讨论】:

      • 那么,如果我想验证 JSON 应该怎么做?
      • 使用外部库。我会更新一些建议。
      • 谢谢,我最大的问题是依赖可能不可靠的库
      • 浏览器(客户端)呢?
      • 您可以使用Yup 进行浏览器验证。这是一个强大而灵活的解决方案。但是你需要先将 JSON 转换为 JS 对象。
      猜你喜欢
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-14
      • 2016-08-10
      • 1970-01-01
      相关资源
      最近更新 更多