Генерировать схему Json из классов case (play framework)

#scala #play-json

#scala #воспроизведение-json

Вопрос:

Я использую Play framework для преобразования между классом case и Json.

Как я могу извлечь схему Json, соответствующую классу case?

Редактировать: если класс case class Foo(string:Option[String], int:Option[Int])

Схема должна быть (приблизительно):

 {
 "$schema": "http://json-schema.org/draft-07/schema#",
 "$id": "http://example.com/product.schema.json",
 "title": "Foo",
 "type": "object",
 "properties": {
   "string": {
     "type": "string"
   },
   "int": {
     "type": "int"
   }
 },
 "required": [ ]
}
 

Комментарии:

1. Вы не можете. Кодеки JSON — это просто функции, и вы не можете извлечь из функции, как она создана, вы можете только вызвать ее. Вам придется создавать схему параллельно с кодеками, сохраняя их синхронизацию, или использовать некоторую структуру, которая может использоваться для построения как кодеков, так и схемы.

2. Вы имеете в виду извлечение данных из JSON, соответствующих классу case, случайно?

3. @TomerShetah добавил пример

Ответ №1:

Используйте для этого scala-jsonschema и спонсируйте автора этой замечательной библиотеки.

Библиотека также поддерживает spray-json, circe и некоторые другие анализаторы JSON для Scala.