Json4s: преобразовать тип в JValue
У меня есть исходный объект src
и хотел бы получить от него JValue
. Все примеры и документация для json4s, похоже, вращаются вокруг получения строки в кодировке JSON, например:
def encodeJson(src: AnyRef): String = {
import org.json4s.NoTypeHints
import org.json4s.JsonDSL.WithDouble._
import org.json4s.jackson.JsonMethods._
import org.json4s.jackson.Serialization
import org.json4s.jackson.Serialization.write
implicit val formats = Serialization.formats(NoTypeHints)
write(src)
}
Отлично, если мне нужен только конечный результат, но я бы предпочел написать:
def encodeJson(src: AnyRef): JValue
Кажется, что ToJsonWritable[T]
- это то, что я хочу использовать, но я не могу найти реализацию для Writer[AnyRef]
(и не могу найти скалядоки для json4s, который просто скажет мне реализации).
Ответы
Ответ 1
Ответ здесь org.json4s.Extraction
- он имеет метод decompose(a: Any)(implicit formats: Formats): JValue
:
def encodeJson(src: AnyRef): JValue = {
import org.json4s.{ Extraction, NoTypeHints }
import org.json4s.JsonDSL.WithDouble._
import org.json4s.jackson.Serialization
implicit val formats = Serialization.formats(NoTypeHints)
Extraction.decompose(src)
}