Валидатор JSON-схемы в Scala
Мне нужно проверить схему определенного ввода JSON, который я получаю. Я не понимаю, как все это сделать. Но вот что я собрал до сих пор:
Мне нужно подготовить схему для всех видов ввода, используя что-то вроде http://json-schema.org/implementations.html
Тогда мне нужен валидатор, такой как https://github.com/fge/json-schema-validator
Мне нужно передать входные данные json и схему валидатору и получить результат.
Однако мой вопрос заключается в том, что мне нужно использовать jar, который я могу импортировать, и использовать валидатор json-схемы https://github.com/fge/json-schema-validator. Также я не понимаю, как его использовать. Я не знаю формат, который он принимает, классы и методы, необходимые и т. Д.
- Насколько хороша валидаторская поддержка для 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-схемы.