Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.json4s.native.Serialization._
- import org.json4s.JsonDSL.WithBigDecimal._
- object WindowSerializer extends CustomSerializer[Window](format =>
- ( [omitted],
- {
- case Window(frame, size) =>
- ( "size" -> size ) ~
- ( "frame" -> parse(write(frame)) )
- }))
- import org.json4s._
- import org.json4s.jackson.JsonMethods._
- import org.json4s.JsonDSL._
- import java.util.UUID
- case class Thing(name: String)
- case class Box(id: String, thing: Thing)
- class BoxSerializer extends CustomSerializer[Box](format => ({
- case jv: JValue =>
- val id = (jv "id").extract[String]
- val thing = (jv "thing").extract[Thing]
- Box(id, thing)
- }, {
- case b: Box =>
- ("token" -> UUID.randomUUID().toString()) ~
- ("id" -> box.id) ~
- ("thing" -> Extraction.decompose(box.thing))
- }))
- implicit val formats = DefaultFormats + new BoxSerializer
- val box = Box("1000", Thing("a thing"))
- // decompose the value to JSON
- val json = Extraction.decompose(box)
- println(pretty(json))
- // {
- // "token" : "d9bd49dc-11b4-4380-ab10-f6df005a384c",
- // "id" : "1000",
- // "thing" : {
- // "name" : "a thing"
- // }
- // }
- // and read a value of type Box back from the JSON
- println(json.extract[Box])
- // Box(1000,Thing(a thing))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement