extract(json4s)的逆向操作
Reverse operation of extract (json4s)
json4s 允许用户使用 extract
.
将 JsonAST 对象转换为案例 class
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)
但是,要将caseclass转换成JsonAST对象,我能想到的唯一方法是:
- 使用
write
序列化案例 class
- 使用
extract
反序列化一个字符串
如下所示:
parse(write(item)) // JObject(List((name,JString(phone)), (price,JDouble(1000.0))))
有没有更好的转换方式?谢谢!
Extraction.decompose
将 case class 对象转换为 JsonAST。
Extraction.decompose(item) // JObject(List((name,JString(phone)), (price,JDouble(1000.0))))
json4s 允许用户使用 extract
.
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)
但是,要将caseclass转换成JsonAST对象,我能想到的唯一方法是:
- 使用
write
序列化案例 class
- 使用
extract
反序列化一个字符串
如下所示:
parse(write(item)) // JObject(List((name,JString(phone)), (price,JDouble(1000.0))))
有没有更好的转换方式?谢谢!
Extraction.decompose
将 case class 对象转换为 JsonAST。
Extraction.decompose(item) // JObject(List((name,JString(phone)), (price,JDouble(1000.0))))