2014-10-28 16 views
8

In json4s esempi e documentazione vedo spesso gli idiomiScopo del `render` in json4s

compact(render(jval)) 

e

pretty(render(jval)) 

Io non credo di avere effettivamente visto un esempio con compatta o piuttosto applicata direttamente a un codice generato JValue, ma non mi è chiaro cosa stia facendo render. Render è di tipo JValue => JValue e non vedo alcuna differenza evidente rende e funzionante

json.take(100000).filter(x => compact(render(x)) != compact(x)) 

su alcuni dei miei dati restituisce un un insieme vuoto vuoto.

Che cosa fa in realtà render?

risposta

8

immagino che stavate cercando in una delle implementazioni concrete del metodo render, quale definizione si può vedere nel JsonMethods trait:

def render(value: JValue)(implicit formats: Formats = DefaultFormats): T 
def compact(d: T): String 
def pretty(d: T): String 

Il metodo render restituisce un tipo generico T, che è la voce digitare per i metodi compact e pretty.

Ci sono due implementazioni del metodo render nelle json4s progetto, come per le nativa e Jackson sapori ... Ho controllato il codice superficialmente solo ma entrambi sembrano essere filtrando il vuoto elementi dell'oggetto JSON secondo diverse strategie. Diciamo che è pronto per i metodi pretty e/o compact da calciare?