Преобразование любого объекта 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)