> 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 clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en