一尘不染

Java / Android-根据字符串模式验证字符串JSON

json

我很难找到最简单的方法来针对给定的JSON模式字符串验证JSON字符串(作为参考,这是在Java中运行在Android应用程序中)。

理想情况下,我只想传入JSON字符串和JSON模式字符串,并且它返回关于是否通过验证的布尔值。通过搜索,我发现了以下两个有前途的库可以完成此任务:

http://jsontools.berlios.de/

https://github.com/fge/json-schema-validator

但是,第一个在支持不力的情况下似乎已经过时了。我将库实现到我的项目中,即使使用JavaDocs,也无法告诉我如何正确构建“
Validator”对象进行验证。

与第二个类似的故事,似乎是最新的,具有良好的测试代码。但是,对于我想做的事情来说,这很简单,关于如何具体完成我想做的事情(甚至在查看ValidateServlet.java文件之后)似乎有些令人生畏和困惑。

好奇是否有人对完成此任务(从看上去),完成简单任务有任何其他建议,或者我是否需要坚持上面的第二个选项?提前致谢!


阅读 249

收藏
2020-07-27

共1个答案

一尘不染

从本质上讲,这是您链接的Servlet所执行的操作,因此它可能不是单线的,但仍具有表达力。

useV4useId对servlet作为指定,是用于指定验证选项Default to draft v4Use id for addressing

您可以在线查看它:http : //json-schema-
validator.herokuapp.com/

public boolean validate(String jsonData, String jsonSchema, boolean useV4, boolean useId) throws Exception {
   // create the Json nodes for schema and data
   JsonNode schemaNode = JsonLoader.fromString(jsonSchema); // throws JsonProcessingException if error
   JsonNode data = JsonLoader.fromString(jsonData);         // same here

   JsonSchemaFactory factory = JsonSchemaFactories.withOptions(useV4, useId);
   // load the schema and validate
   JsonSchema schema = factory.fromSchema(schemaNode);
   ValidationReport report = schema.validate(data);

   return report.isSuccess();
}
2020-07-27