2014-04-28 16 views
11

Tôi có một số đối tượng nguồn src và muốn nhận được JValue từ đó. Tất cả các ví dụ và tài liệu cho json4s dường như xoay quanh nhận được một chuỗi JSON-mã hóa, như vậy:json4s: Chuyển đổi loại thành JValue

def encodeJson(src: AnyRef): String = { 
    import org.json4s.NoTypeHints 
    import org.json4s.JsonDSL.WithDouble._ 
    import org.json4s.jackson.JsonMethods._ 
    import org.json4s.jackson.Serialization 
    import org.json4s.jackson.Serialization.write 
    implicit val formats = Serialization.formats(NoTypeHints) 

    write(src) 
} 

Đó là tuyệt vời nếu tôi chỉ muốn kết quả cuối cùng, nhưng tôi muốn viết một:

def encodeJson(src: AnyRef): JValue 

Có vẻ như ToJsonWritable[T] là những gì tôi muốn sử dụng, nhưng dường như tôi không thể tìm thấy triển khai cho Writer[AnyRef] (cũng không thể tìm thấy scaladocs cho json4s chỉ cho tôi biết cách triển khai).

Trả lời

9

Câu trả lời ở đây là org.json4s.Extraction - nó có một phương pháp decompose(a: Any)(implicit formats: Formats): JValue:

def encodeJson(src: AnyRef): JValue = { 
    import org.json4s.{ Extraction, NoTypeHints } 
    import org.json4s.JsonDSL.WithDouble._ 
    import org.json4s.jackson.Serialization 
    implicit val formats = Serialization.formats(NoTypeHints) 

    Extraction.decompose(src) 
} 
Các vấn đề liên quan