Преобразование любого объекта Scala в JSON

Я использую последнюю версию Play Framework, а JSON lib - это Json.toJson(obj). Но toJson не способен преобразовать какой-либо объект Scala в JSON, поскольку структура данных неизвестна. Кто-то предложил использовать преобразование case, но здесь мои знания 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)