使用 json4s 将 JSON 中的字段替换为新对象

Replacing Fields in JSON with New Object using json4s

我有一个 scala 应用程序,我在其中使用 json4s 进行一些 json 操作。我有几个字段想转换成一个新对象。

例如我有以下内容:

"start_datetime":"2016-12-11T01:00:05+0000",
"type":"absolute",
"start":"5",
"type":"offset"

想制作成:

"time":[
 {
    "type":"absolute",
    "start_datetime":"2016-12-11T01:00:05+0000"
 },
 {
    "type":"offset",
    "start":"10"
 }
]

有什么方法可以使用 json4s 来做到这一点?

下面的代码片段使用原生 json4s DSL

一个Json对象是由元组通过方法~链接在一起形成的,Json数组是通过在Scala中创建一个Sequence对象来创建的。其他原始类型如 String、Number、Boolean 映射到 scala 中的相应类型

import org.json4s.native.JsonMethods._
import org.json4s.JsonDSL._

val json = "time" -> Seq(
("type" -> "absolute") ~ ("start_datetime" -> "2016-12-11T01:00:05+0000"),
("type" -> "offset") ~ ("start" -> "10")
)

scala> compact(render(json))
res3: String = {"time":[{"type":"absolute","start_datetime":"2016-12-11T01:00:05+0000"},{"type":"offset","start":"10"}]}