Simple example of custom handlers

40 views
Skip to first unread message

Dustin Getz

unread,
Sep 30, 2017, 4:39:13 PM9/30/17
to transit-format
(deftype CustomUri [s])

(def write-handlers {CustomUri (reify WriteHandler
(tag [_ v] "r")
(rep [_ v] (.s v))
(stringRep [_ v] nil)
(getVerboseHandler [_] nil))})
(def read-handlers {"r" (reify ReadHandler
(fromRep [_ v] (CustomUri. v)))})


(def out (ByteArrayOutputStream. 4096))
(def writer (transit/writer out :json {:handlers write-handlers}))

(transit/write writer (URI. "http://google.com"))
(.toString out) ;; => "[\"~#'\",\"~rhttp://google.com\"]"
(def in (ByteArrayInputStream. (.toByteArray out)))
(def reader (transit/reader in :json {:handlers read-handlers}))
(prn (transit/read reader)) ;; => #object[user.CustomUri 0xe68a2af "user.CustomUri@e68a2af"]
Reply all
Reply to author
Forward
0 new messages