根据 javascript 中的模式验证 json
Posted
技术标签:
【中文标题】根据 javascript 中的模式验证 json【英文标题】:validate json against schema in javascript 【发布时间】:2016-12-20 13:24:22 【问题描述】:问题:
是否有一种普通的或原生的 javascript 方法来根据 JSON 模式验证 JSON 脚本?
我在 Github 上找到了很多库,但没有原生/简单的解决方案。 EcmaScript 没有这方面的规范吗?并且没有浏览器(或 nodejs)有办法在本地验证 JSON 吗?
问题背景:
我开发了一个非常复杂的架构。 它应该与一个脚本一起工作,该脚本要求传入的 JSON 数据符合架构。
【问题讨论】:
【参考方案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 对象。以上是关于根据 javascript 中的模式验证 json的主要内容,如果未能解决你的问题,请参考以下文章