当前位置: 首页 > 面试题库 >

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

沙海
2023-03-14
问题内容

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

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

http://jsontools.berlios.de/

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

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

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

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


问题答案:

从本质上讲,这是您链接的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();
}


 类似资料:
  • 我有一个电子邮件地址字段,其中有一个客户端验证,不允许几个临时域,如tempmailder.com或dispostable.com. 在服务器端,我使用了fluent验证来指定验证规则。 web中不允许的临时域。将文件配置为逗号分隔的字符串。 我是否可以指定一种方法来验证用户根据不允许的电子邮件域列表输入的值。 谢啦

  • 问题内容: 如果长度超过10个字符,我想修剪字符串。 假设字符串长度为12(),则新的修剪后的字符串将包含。 我该如何实现? 问题答案: s = s.substring(0, Math.min(s.length(), 10)); 这样使用字符串可以避免在字符串已经短于的情况下出现异常。 笔记: 上面做了真正的修剪。如果您实际上想将截断的最后三个(!)字符替换为点,请使用Apache Commons

  • 问题内容: 我试图做一个多项式运算符(两个,多个多项式的和,余数,乘法和除法)。该代码必须使用Java并使用链接列表。 我想知道如何使用计算器或如何验证多项式是否有效。我想从字符串构造一个多项式,但是我不知道是否有另一个类可以简化事情。 这是一项家庭作业,因此我并不需要完整的代码,只是为我指明了正确的方向。 有两类,一类用于节点(命名为Monomio),一类用于列表(命名为Polinomio,是单

  • 问题内容: Bellow方法正在验证字符串是否为正确的IPv4地址,如果有效,则返回true。regex和优雅的任何改进将不胜感激: 问题答案: 这是一种易于阅读,效率稍低的方法。

  • 我希望根据模式的maximal/minimum(number)或maximumlength/minimumlength(string)来验证模式。我有一个json表单: 为什么这个例子不能使用验证?我的模型未验证为false。根据本文档,可以在数组中定义不同的类型,但是如何基于最小/最大值进行验证呢?

  • @target(value={METHOD,FIELD,ANNOTATION_TYPE,CONSTRUCTOR,PARAMETER})@retention(value=runtime)@documented@constraint(validatedby={})public@interface Min 带注释的元素必须是一个数值,该数值必须大于或等于指定的最小值。 支持的类型有: 注意,由于舍入错误