json - json4s中 `render`的用途

标签 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 方法的具体实现之一,您可以在 JsonMethods trait 中看到该定义。 :

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

方法render返回一个泛型类型T,它是compactpretty的入口类型方法。

json4s 项目中,有两种方法 render 的实现,分别是 nativejackson flavor ...我只从表面上检查了代码,但它们似乎都根据不同的策略过滤 json 对象的空元素。假设要为 pretty 和/或 compact 方法启动做好准备?

关于json - json4s中 `render`的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26599987/

相关文章:

python - Bottle 的 jsonify/pretty-print JSON

json - 为什么在 JSONB 中提取显式 `null` 作为文本会产生 SQL `null` ?

java - String 类型的属性与以下类型不匹配 : object in schema JSON Schema validator

json - 使用 json4s 从 json 字符串中提取键

java - 使用 Gson 或 Jackson 将 JSON 字符串展平,使包含每个级别键值的键映射到 Map<String, String>

scala - 作为守护进程运行 SBT

scala collection.Map 不能添加到

scala - 如何从下载 Spark 页面的源代码构建 Spark?

scala - 我如何在 play.api.libs.json.JsValue 和 org.json4s.JValue 之间转换

scala - 使用可变键转换 Json