我很难找到最简单的方法来针对给定的JSON模式字符串验证JSON字符串(作为参考,这是在Java中运行在Android应用程序中)。
理想情况下,我只想传入JSON字符串和JSON模式字符串,并且它返回关于是否通过验证的布尔值。通过搜索,我发现了以下两个有前途的库可以完成此任务:
http://jsontools.berlios.de/
https://github.com/fge/json-schema-validator
但是,第一个在支持不力的情况下似乎已经过时了。我将库实现到我的项目中,即使使用JavaDocs,也无法告诉我如何正确构建“ Validator”对象进行验证。
与第二个类似的故事,似乎是最新的,具有良好的测试代码。但是,对于我想做的事情来说,这很简单,关于如何具体完成我想做的事情(甚至在查看ValidateServlet.java文件之后)似乎有些令人生畏和困惑。
好奇是否有人对完成此任务(从看上去),完成简单任务有任何其他建议,或者我是否需要坚持上面的第二个选项?提前致谢!
从本质上讲,这是您链接的Servlet所执行的操作,因此它可能不是单线的,但仍具有表达力。
useV4和useId对servlet作为指定,是用于指定验证选项Default to draft v4和Use id for addressing。
useV4
useId
Default to draft v4
Use 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(); }