2014-04-28 15 views
11

Ho qualche oggetto sorgente src e vorrei ottenere un JValue da esso. Tutti gli esempi e la documentazione per json4s sembrano ruotare intorno a ottenere una stringa JSON-encoded, in questo modo:json4s: Converti tipo in JValue

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) 
} 

che è grande, se voglio solo il risultato finale, ma io preferisco scrivere un:

def encodeJson(src: AnyRef): JValue 

Sembra che ToJsonWritable[T] sia quello che voglio usare, ma non riesco a trovare un'implementazione per Writer[AnyRef] (né posso trovare scaladoc per json4s che mi diranno solo le implementazioni).

risposta

9

La risposta qui è org.json4s.Extraction - ha un metodo di 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) 
} 
Problemi correlati