Валидатор JSON-схемы в Scala

Мне нужно проверить схему определенного ввода JSON, который я получаю. Я не понимаю, как все это сделать. Но вот что я собрал до сих пор:

  1. Мне нужно подготовить схему для всех видов ввода, используя что-то вроде http://json-schema.org/implementations.html

  2. Тогда мне нужен валидатор, такой как https://github.com/fge/json-schema-validator

  3. Мне нужно передать входные данные json и схему валидатору и получить результат.

Однако мой вопрос заключается в том, что мне нужно использовать jar, который я могу импортировать, и использовать валидатор json-схемы https://github.com/fge/json-schema-validator. Также я не понимаю, как его использовать. Я не знаю формат, который он принимает, классы и методы, необходимые и т. Д.

  1. Насколько хороша валидаторская поддержка для Scala?

3 ответа

Решение

Я бы не стал испытывать трудности с ручным сбором банок валидатора JSON-схемы (сделал это, не весело). Для этого лучше использовать инструмент (например, 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.

PS: Если вы хотите собирать зависимости вручную, вы можете переходить через зависимости, начиная с этой страницы.

Есть упорядоченный, liftweb-json реализация валидатора JSON для Scala:

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 получить JValue из String.

Я заметил, что orderly4jvm не поддерживает последнюю версию JSON Schema 4, что вызывает проблемы, если вы хотите использовать ее для генерации JSON-схемы.

Другие вопросы по тегам