2017-01-30 44 views
0

我有一个使用json4s做一些json操作的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?

回答

2

以下代码段使用本地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"}]}