Scala中的JSON模式验证程序

时间:2015-01-15 06:17:57

标签: json scala validation jsonschema

我需要验证我收到的某些JSON输入的架构。我不清楚如何处理整个事情。但这是我到目前为止收集的内容:

  1. 我需要使用诸如http://json-schema.org/implementations.html

  2. 之类的内容为各种输入准备架构
  3. 然后我需要一个像https://github.com/fge/json-schema-validator

  4. 这样的验证器
  5. 我需要将json输入和架构提供给验证器并获得结果。

  6. 但是我的问题是我需要使用一个jar,我可以导入并使用json-schema-validator https://github.com/fge/json-schema-validator。我也不清楚如何使用它。我不知道它接受的格式,所需的类和方法等。

    1. 验证者对Scala的支持有多好?

3 个答案:

答案 0 :(得分:1)

基于Orderlyliftweb-json的Scala的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))

使用net.liftweb.json.parse(s: String): JValue从String获取JValue。

答案 1 :(得分:1)

我不会经历手动收集json架构验证器罐子的痛苦(做到这一点,不好玩)。最好使用一种工具(如maven,sbt,gradle或ivy)。 如果您想在OSGi环境中使用它,可能需要使用different (probably not up-to-date) version

用法:

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.

PS。:如果您想手动收集依赖项,可以从this page开始传递依赖项。

答案 2 :(得分:0)

我注意到orderly4jvm不支持最新的JSON Schema版本4,如果你想用它来生成JSON架构,会导致问题。