Skip to content

Instantly share code, notes, and snippets.

@cgrand
Forked from jcromartie/unbean.clj
Created January 22, 2010 16:39
Show Gist options
  • Save cgrand/283896 to your computer and use it in GitHub Desktop.
Save cgrand/283896 to your computer and use it in GitHub Desktop.
(defn unbean [m]
"Tries to recreate a simple JavaBean object from map m"
(let [obj (.newInstance (:class m))]
(doseq [#^java.beans.PropertyDescriptor pd (-> String java.beans.Introspector/getBeanInfo .getPropertyDescriptors)
:let [wm (.getWriteMethod pd) k (-> pd .getName keyword)] :when (and wm (contains? m k))]
(.invoke wm obj (to-array [(m k)])))
obj))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment