它有一种方式或技术,如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");
}
答案 0 :(得分:0)
您正在寻找OPEN API:https://github.com/OAI/OpenAPI-Specification
这是前SWAGGER TOOL(https://swagger.io),允许在JSON / YAML / XML中定义对象。 这经常用于:
这使您不仅可以记录您的POJO,还可以记录许多其他内容。它非常强大。
答案 1 :(得分:0)
我刚刚参与了这个项目,它完全符合您的要求: https://github.com/everit-org/json-schema
这是架构的一个例子:
{
"type" : "object",
"properties" : {
"rectangle" : {"$ref" : "#/definitions/Rectangle" }
},
"definitions" : {
"size" : {
"type" : "number",
"minimum" : 0
},
"Rectangle" : {
"type" : "object",
"properties" : {
"a" : {"$ref" : "#/definitions/size"},
"b" : {"$ref" : "#/definitions/size"}
}
}
}
}
示例JSON:
{
"rectangle" : {
"a" : -5,
"b" : 5
}
}
在这种情况下,抛出的ValidationException
将指向#/rectangle/a
。
try {
schema.validate(rectangleSingleFailure);
} catch (ValidationException e) {
// prints #/rectangle/a: -5.0 is not higher or equal to 0
System.out.println(e.getMessage());
}
答案 2 :(得分:0)
您可以查看此library。您可以针对JSON模式验证Java POJO。它支持JSON模式v3和v4。