json4s中`render`的目的

Dan*_*ler 10 json scala json4s

在json4s的例子和文档中,我经常看到成语

compact(render(jval))
Run Code Online (Sandbox Code Playgroud)

pretty(render(jval))
Run Code Online (Sandbox Code Playgroud)

我不认为我实际上看到过一个直接应用于生成的代码的紧凑或漂亮的例子JValue,但我不清楚render这里做了什么.渲染有类型JValue => JValue,我没有看到它制作和运行有任何明显的差异

json.take(100000).filter(x => compact(render(x)) != compact(x))
Run Code Online (Sandbox Code Playgroud)

我的一些数据返回一个空的空集合.

什么是render真正做到?

Mac*_*Luq 10

我想你正在研究该render方法的具体实现之一,您可以在以下内容中看到该定义JsonMethods trait:

def render(value: JValue)(implicit formats: Formats = DefaultFormats): T
def compact(d: T): String
def pretty(d: T): String
Run Code Online (Sandbox Code Playgroud)

该方法render返回泛型类型T,它是compactpretty方法的条目类型.

有方法的两种实现renderjson4s项目,具体根据本地杰克逊的味道......我只是肤浅检查的代码,但他们似乎都根据不同的策略来过滤JSON对象的空元素.让我们说它准备好pretty和/或compact方法开始?