Lson为json架构目录

时间:2017-11-02 23:18:26

标签: json jsonschema lint

我的团队构建了一个API,其中所有输入和输出都使用JSON Schema来验证数据,项目正在增长,昨天我发现我们已经有85个JSON文件,并且每个文件都有一个JSON模式来验证某些东西,I还检测到我在每个文件上都有很多重构,例如,应该提取许多重复的代码并将其作为单个模式放置,并在每个文件上引用此模式。所以我试着把它谷歌一个库来扫描这个目录,并帮我检测这种错误,还有一个JSON模式linter,帮助我检测其他错误,但我找不到任何东西。所以我发布这个问题,以确定是否有人遇到同样的问题,并找到了解决问题的工具。

4 个答案:

答案 0 :(得分:1)

对于我正在进行的项目,我们正在使用tv4来验证JSON Schema文件,而不是'linting'本身,但应该是你正在寻找的。

答案 1 :(得分:1)

我之前从未使用过这个库,但这里有一个你可以做的例子。图书馆本身并不是这里的重要部分。

下载http://json-schema.org/draft-04/schema并将其另存为draft04-metaschema.json(或您为模式使用的任何元架构)。使用npm:{/ p>中的ajv-cli

npm install -g ajv-cli
ajv validate -s draft04-metaschema.json -d your-schema.json

这将根据指定的metaschema验证您的架构,以确保它有效。您可以使用相同的方法来使用您希望的任何其他库来验证您的模式。希望这足以让你开始。

答案 2 :(得分:0)

我还必须找到一种验证模式的方法。 ajv validate -s draft06-metaschema.json -d your-schema.json仅检查基本内容(例如,它不检查$ref的值和正则表达式)。 ajv compile -s your-schema.json检查更多内容并显示错误消息(例如error: Invalid regular expression: /^(\d|[12]\d|3[01]$/: Unterminated group)。

因此,我使用以下脚本(validate_schema.sh):

#!/bin/bash

set -ex

[ $# = 3 ]
url_draft=$1
json_draft=$2
json_target=$3

jq -e '.["$schema"]=="'"$url_draft"'"' "$json_target"

# False positives are possible though:
ajv validate -s "$json_draft" -d "$json_target"

ajv compile -s "$json_target"

答案 3 :(得分:0)

https://www.json-schema-linter.com/上有一个JSON模式linter,它也有一个 WebAPI 。它捕获了JSON模式文件中的一些常见错误。