首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java/Android -根据字符串架构验证String JSON

Java/Android -根据字符串架构验证String JSON
EN

Stack Overflow用户
提问于 2013-01-25 05:51:48
回答 2查看 29K关注 0票数 16

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

理想情况下,我只想传入一个JSON字符串和一个JSON模式字符串,它会返回一个布尔值,说明它是否通过了验证。通过搜索,我找到了以下两个很有前途的库来实现这一点:

http://jsontools.berlios.de/

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

然而,第一个似乎相当过时,支持率很低。我在我的项目中实现了这个库,即使使用他们的JavaDocs,我也不知道如何正确地构建用于验证的“验证器”对象。

与第二个类似的故事,它似乎是最新的,有很好的测试代码。然而,对于我想要做的事情,这非常简单,对于如何具体实现我想要的东西似乎有点令人望而生畏和困惑(即使在查看了ValidateServlet.java文件之后)。

好奇是否有人有任何其他的建议来完成这个(从它看起来)的好方法,需要的简单任务,或者如果我可能需要坚持上面的第二个选项?提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-25 06:18:38

这实际上就是您链接的Servlet所做的事情,所以它可能不是一行程序,但它仍然具有表现力。

servlet上指定的useV4useId用于指定Default to draft v4Use id for addressing的验证选项。

你可以在网上看到:http://json-schema-validator.herokuapp.com/

代码语言:javascript
复制
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();
}
票数 10
EN

Stack Overflow用户

发布于 2016-10-13 10:18:09

@Alex的答案适用于我的Android系统,但需要我使用Multi-dex并添加:

代码语言:javascript
复制
    packagingOptions {
        pickFirst 'META-INF/ASL-2.0.txt'
        pickFirst 'draftv4/schema'
        pickFirst 'draftv3/schema'
        pickFirst 'META-INF/LICENSE'
        pickFirst 'META-INF/LGPL-3.0.txt'
    }

到我的build.gradle

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14511468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档