Scala中的JSON模式验证程序

Scala中的JSON模式验证程序,json,scala,validation,jsonschema,Json,Scala,Validation,Jsonschema,我需要验证我收到的某些JSON输入的模式。我不清楚整个事情该怎么办。但到目前为止,我收集到的是: 我需要为各种输入准备一个模式,比如 然后我需要一个像这样的验证器 我需要向验证器提供json输入和模式,并获得结果 然而,我的问题是,我需要使用一个jar,我可以导入并使用json模式验证器。我也不清楚如何使用它。我不知道它接受的格式,需要的类和方法等等 验证器对Scala的支持有多好 Scala有一个基于、liftweb json的json验证器实现: import com.nparry.orde

我需要验证我收到的某些JSON输入的模式。我不清楚整个事情该怎么办。但到目前为止,我收集到的是:

  • 我需要为各种输入准备一个模式,比如

  • 然后我需要一个像这样的验证器

  • 我需要向验证器提供json输入和模式,并获得结果

  • 然而,我的问题是,我需要使用一个jar,我可以导入并使用json模式验证器。我也不清楚如何使用它。我不知道它接受的格式,需要的类和方法等等

  • 验证器对Scala的支持有多好
  • Scala有一个基于、
    liftweb json
    的json验证器实现:

    import com.nparry.orderly._
    import net.liftweb.json.JsonAST._
    
    val orderly = Orderly("integer {0,100};")
    
    val noProblems = orderly.validate(JInt(50))
    val notAllowed = orderly.validate(JInt(200))
    

    用于从字符串中获取JValue。

    我不会经历手动收集json模式验证程序的JAR的痛苦(这样做并不有趣)。最好使用工具(如maven、sbt、gradle或ivy)。 如果您想在OSGi环境中使用它,您可能需要使用

    用法:

    val factory: JsonSchemaFactory = JsonSchemaFactory.getDefault
    val validator: JsonValidator = factory.getValidator
    val schemaJson: com.fasterxml.jackson.databind.JsonNode = yourJsonSchemaInJackson2Format
    val report: ProcessingReport = validator.validate(schemaJson, yourJsonInJackson2Format)
    //check your report.
    

    注:如果您想手动收集依赖项,您可以从开始过渡地查看依赖项。

    我注意到orderly4jvm不支持最新的JSON模式版本4,如果您想使用它生成JSON模式,这会导致问题。

    对于Scala-请尝试:,这里有一些示例如何使用什么是Jackson2Format?普通JSON读取到
    com.fasterxml.jackson.databind.JsonNode
    。以及如何将计划JSON绑定到Jnode?
    mapper.readTree(…)
    请参阅:如何使用Oriender根据JSON模式验证JSON?@AlexanderMyltsev您不能,但是,模式本身将是一个很好的选择。您可以将orderide导出为Json模式,反之亦然:@dk,orderide看起来真的很酷:简短而干净。但不幸的是,它已经死了,似乎不支持最新版本的json模式。@AlexanderMyltsev上一次从scala repo发布是在我的答案之前2个月,上次github更新是在3个月之前。我不会说JSON模式太活跃(与xsd/RELAXNG相比),也没有面向scala的验证器解决方案。谈到现代JSONSchema,Order将fine转换为草案v4,也许不是相反。无论如何,对于简单的验证来说,它仍然是一个不错的选择,不管它已经6岁了。为什么你说JSON模式不存在?