In json4s examples and documentation I often see the idioms
compact(render(jval))
and
pretty(render(jval))
I do not think I have actually seen an example with compact or pretty applied directly to a code generated JValue
,
but it is not clear to me what render
is doing here.
Render has type JValue => JValue
and I do not see any obvious difference it makes
and running
json.take(100000).filter(x => compact(render(x)) != compact(x))
on some of my data returns an empty an empty collection.
What does render
actually do?
I guess you were looking at one of the concrete implementations of the
render
method, which definition you can see in theJsonMethods trait
:The method
render
returns a generic typeT
, which is the entry type for thecompact
andpretty
methods.There are two implementations of the method
render
in the json4s project, as per the native and jackson flavours... I've checked the code superficially only but they both seem to be filtering the empty elements of the json object according to different strategies. Let's say getting it ready for thepretty
and / orcompact
methods to kick in?