代码之家  ›  专栏  ›  技术社区  ›  yiksanchan

提取反向操作(json4s)

  •  0
  • yiksanchan  · 技术社区  · 6 年前

    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)
    

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

    1. 使用序列化case类 write
    2. 使用反序列化字符串 提取

    如下所示:

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

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   yiksanchan    6 年前

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

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