在json4s的例子和文档中,我经常看到成语
compact(render(jval))
和
pretty(render(jval))
我认为我实际上没有看到过将紧凑或漂亮应用于生成JValue
代码的示例,
但我不清楚render
在这里做了什么。
渲染类型为JValue => JValue
,我认为它没有任何明显的差异
并且正在运行
json.take(100000).filter(x => compact(render(x)) != compact(x))
对我的一些数据返回一个空的空集合。
render
实际上做了什么?
答案 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
,它是compact
和pretty
方法的条目类型。
根据 native 和 jackson 风格, json4s 项目中的方法render
有两种实现方式。我只是在表面上检查了代码,但他们似乎都根据不同的策略过滤了json对象的空元素。让我们说准备好让pretty
和/或compact
方法启动?