提取的反向操作(json4s)

时间:2018-09-13 17:01:08

标签: scala json4s

json4s允许用户使用extract将JsonAST对象转换为案例类。

import org.json4s._
import org.json4s.jackson.JsonMethods._

implicit val formats = DefaultFormats

case class Item(name: String, price: Double)
val json = parse("""{"name": "phone", "price": 1000.0}""") // JObject(List((name,JString(phone)), (price,JDouble(1000.0))))
val item = json.extract[Item] // Item(phone,1000.0)

但是,要将案例类转换为JsonAST对象,我唯一想到的方法是:

  1. 使用write序列化案例类
  2. 使用extract对字符串进行反序列化

像下面这样:

parse(write(item)) // JObject(List((name,JString(phone)), (price,JDouble(1000.0))))

有没有更好的转换方法?谢谢!

1 个答案:

答案 0 :(得分:0)

Extraction.decompose将案例类对象转换为JsonAST。

Extraction.decompose(item) // JObject(List((name,JString(phone)), (price,JDouble(1000.0))))