【发布时间】:2018-05-29 12:28:28
【问题描述】:
有一种方法或技术,如 JSON 模式,我可以在其中获得数据结构的 JSON 描述,如果符合描述,我可以在 JAVA 中进行验证。 我想要 JSON 模式之类的东西来验证传入的数据,但我想验证 POJO 或 Maps 作为 Java 对象,而不是 JSON 文档本身。
将 POJO 设为 JSON 只是为了验证它不是一个实用的选项,谢谢!
是一种使用 JSON 模式或任何其他技术的方法吗?
更新:摘要 据我所知:JSON Schema 是一个用于验证 JSON 文档的 JSON 文档。我想要一个用 JSON 编写的模式来验证 Java POJO。
下面的例子(我使用 validate 作为类 Validator 的静态函数):
public static void main(String[] args) {
String schema = "{\n" +
" \"type\": \"object\",\n" +
" \"properties\": {\n" +
" \"street_address\": { \"type\": \"string\" },\n" +
" \"city\": { \"type\": \"string\" },\n" +
" \"state\": { \"type\": \"string\" }\n" +
" },\n" +
" \"required\": [\"street_address\", \"city\", \"state\"]\n" +
"}";
Object foo = new Hashtable();
((Map)foo).put("street_address","first street");
((Map)foo).put("street_address","The city");
((Map)foo).put("street_address","Not the USA");
Validator validator = new Validator(schema);
if (Validator.validate(foo, schema)) {
System.out.println("It's validated");
} else
System.err.println("It isn't validated");
}
【问题讨论】:
-
我正在检查,但到目前为止,它似乎适用于注释。我需要加载模式并将其动态验证到可能是或不是映射的对象,换句话说,任何 POJO 对象。休眠验证器可以做到这一点吗?你能详细说明一下吗?
-
您需要类似 XSD 的 XML 来验证 JSON 元素,而不是语法。正确吗?
-
我或多或少地针对“等效”,休眠验证仅适用于 java 类上的注释。但是通过谷歌搜索你可以找到这个github.com/java-json-tools/json-schema-validator(但我对这个库没有经验)
-
我不确定我是否理解你的问题。我需要一个基于 JSON 的 POJO 验证机制。换句话说,使用 JSON 模式来验证 POJO 中是否包含所有元素。
标签: java json jsonschema