JSON Scala 中的模式验证器

JSON schema validator in Scala

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

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

  2. 之类的东西为各种输入准备一个模式
  3. 然后我需要一个像 https://github.com/fge/json-schema-validator

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

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

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

Scala 有 Orderlyliftweb-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))

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

我不会经历手动收集 json 模式验证器的 jar 的痛苦(那样做,不好玩)。最好为此使用一个工具(如 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.

开始传递依赖项

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