> I have a Java Map contains Map of Maps/List (JSON like map) and have
> to convert to Clojure map (This happens at Java - Clojure Interop), So
> I have written a converter function 'as-clj-map' by modifying the
> clojure walk functions, It works fine, but consume lot of cpu when the
> data structure is quit big. Any suggestions to improve this code?
What about using protocols for this job?
(defprotocol ConvertibleToClojure
(->clj [o]))
(extend-protocol ConvertibleToClojure
java.util.Map
(->clj [o] (let [entries (.entrySet o)]
(reduce (fn [m [^String k v]]
(assoc m (keyword k) (->clj v)))
{} entries)))
java.util.List
(->clj [o] (vec (map ->clj o)))
java.lang.Object
(->clj [o] o)
nil
(->clj [_] nil))
(defn as-clj-map
[m]
(->clj m))
Let me know if this works for you & meets your performance requirements.
Regards,
BG
--
Baishampayan Ghose
b.ghose at gmail.com
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en