json4s中`render`的目的

时间:2014-10-28 02:30:37

标签: json scala json4s

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

compact(render(jval))

pretty(render(jval))

我认为我实际上没有看到过将紧凑或漂亮应用于生成JValue代码的示例, 但我不清楚render在这里做了什么。 渲染类型为JValue => JValue,我认为它没有任何明显的差异 并且正在运行

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

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

render实际上做了什么?

1 个答案:

答案 0 :(得分:10)

我猜您正在查看render方法的具体实现之一,您可以在JsonMethods trait中看到该定义:

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

方法render返回通用类型T,它是compactpretty方法的条目类型。

根据 native jackson 风格, json4s 项目中的方法render有两种实现方式。我只是在表面上检查了代码,但他们似乎都根据不同的策略过滤了json对象的空元素。让我们说准备好让pretty和/或compact方法启动?