我必须向客户提供上传他自己的JSON模式的可能性。
是否有方法验证用户提供的JSON模式是有效的JSON模式,而不仅仅是数据?
我在这个库中使用Javahttps://github.com/networknt/json-schema-validator
更新:
我有以下模式:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "car",
"description": "representation of car",
"type": "object",
"required": [
"id",
"make",
"age",
"model",
"mileage",
"fuel"
],
"properties": {
"id": {
"type": "string"
},
"make": {
"type": "string"
},
"model": {
"type": "string"
},
"age": {
"type": "integer",
"minimum": 0
},
"color": {
"type": "string"
},
"power_in_hp": {
"type": "integer",
"minimum": 0
},
"fuel": {
"enum": ["gasoline", "diesel", "hybrid", "electric"]
},
"mileage": {
"type": "integer",
"minimum": 0
}
}
}
我需要知道这是否是一个有效的JSON模式,而不是JSON数据。此处提供了一个JSON数据示例:
{
"id": "1f5abf56-7210-481a-b2d5-324b6e0f6358",
"make": "Volkswagen",
"model": "Lupo",
"age": 18,
"color": "black",
"power_in_hp": 61,
"fuel": "diesel",
"mileage": 401234
}
是的,您希望根据JSON模式元模式验证该JSON。
它将尽可能确保模式是有效的,但并不是说它有意义、没有不合逻辑或不可能。
我试图使用另一个JSON模式来验证JSON模式。 要验证的JSON模式示例:https://jsonschema.net/home 验证上述模式的验证模式参考:https://github.com/ajv-validator/ajv/blob/master/lib/refs/json-schema-draft-07.json 从上面的中,如果我删除,我的JSON将变得无效。 我有什么方法可以定义根
我有一个用例,我将把一个json-schema作为输入,验证它,然后保存在我的系统中。稍后,我将获取json数据,我需要使用上面提到的json-schema来验证这些数据。给定这个场景,我需要执行两个级别的验证: 我使用的是json-schema-validator jar,只能找到第二级验证,在文档中找不到json-schema验证。例如:假设我们有以下示例json-schema:
问题内容: 有没有一种方法可以针对该结构的JSON模式验证JSON结构?我已经查看并发现JSON.Net验证了,但这并不能满足我的要求。 JSON.net可以: 这证明是正确的。 这也证明是真的 仅此验证为假。 理想情况下,我希望它可以验证那里也没有应该存在的字段。 问题答案: 我认为您只需要添加 到您的架构。这将停止提供未知属性。 因此,现在您的结果将是:-正确,错误,错误 测试代码… 输出:-
这是要根据模式验证的JSON。 问题是,如果我们传递了错误的数据,它将正确地验证eid和ename的类型(即整数或字符串)。对于例如: 如果我们为限定传递了错误的类型,那么它将验证为true(即,它不验证限定的类型,可能是因为它是嵌套的)。
我在验证JSON时遇到了一些错误。我无法理解这些错误,有人能帮我解释一下吗。 } 这是json。 消息:JSON与“anyOf”中的任何模式都不匹配。架构路径: 消息:无效类型。应为数组,但得到的是字符串。架构路径: 消息:值“标识”载体“未在枚举中定义。架构路径: 消息:字符串“uui # abb 0 ef 56-8562-4056-aa62-AFB 758 a 150 ad”未根据格式“uri
在Effective Java(第二版)的第2项中,作者提到了以下关于在使用构建器时对参数施加不变量的内容: 在将参数从构建器复制到对象后,必须检查它们,并在对象字段而不是构建器字段上检查它们(项目 39)。如果违反任何不变量,则生成方法应引发非法状态异常(项 60)。 这是否意味着构建方法创建目标对象后,应该将其传递给验证例程以进行任何所需的验证? 另外,有人能解释一下这背后的原因吗?