2017-01-30 79 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"}]}