Преобразование любого объекта Scala в JSON
Я использую последнюю версию Play Framework, и это JSON lib, как это Json.toJson(obj)
. Но toJson не способен преобразовать любой объект Scala в JSON, потому что структура данных неизвестна. Кто-то предложил использовать case convert, но здесь мои знания Scala не соответствуют. Данные поступают из базы данных, но структура таблицы неизвестна.
где я должен искать дальше, чтобы создать преобразование такой неизвестной структуры данных в JSON?
1 ответов
учитывая, что есть только ограниченное количество типов, которые вы хотите сериализовать в JSON, это должно работать:
object MyWriter {
implicit val anyValWriter = Writes[Any] (a => a match {
case v:String => Json.toJson(v)
case v:Int => Json.toJson(v)
case v:Any => Json.toJson(v.toString)
// or, if you don't care about the value
case _ => throw new RuntimeException("unserializeable type")
})
}
вы можете использовать его, а затем импортировать неявное значение в точке, где вы хотите сериализовать свой Any
:
import MyWriter.anyValWriter
val a: Any = "Foo"
Json.toJson(a)