Подтвердить что ты не робот

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, который просто скажет мне реализации).

4b9b3361

Ответ 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)
}