![](/img/trans.png)
[英]How do I set up a clojureScript project to use specs and test the clojure.core functions at runtime?
[英]How can I use clojure.core/bean recursively?
所以我認為clojure.core / bean非常接近我想要的,但是我正在使用一個嵌套bean的Java應用程序,這樣我最終會得到這樣的地圖:
{:month-total 3835.0 :name "Jan's Meat Diner" :owners #<BarOwner[] [Lcom.fancypants.BarOwner;@1fb332d}
如何,我在Java對象上遞歸調用bean
,以便我可以讓我想象中的BarOwner
對象自己作為地圖發出:
{:month-total 3835.0 :name "Jan's Meat Diner" :owners { [:name "Jack"] [:name "Jill"] } }
我發現clojure/java.data
和from-java
可能比bean
更適合這種事情。
雖然它可能不是“如何遞歸使用bean”的理想答案,但在Clojure社區的網站下使用更多更豐富的contrib庫確實解決了它。 特別
提供簡單的遞歸bean解析,並且可以配置為在毛茸茸的情況下專門處理java類型。 我向其他想要使用bean
人推薦這個。
找出什么是豆而不是什么是非常棘手的。 這似乎可以解決bean中的bean和列表屬性的問題。 可能你會想要更多的類添加到probably-bean?
功能,也許是對地圖屬性的一些支持。
(defn probably-bean? [o]
(and (not (coll? o))
((complement #{Class Long String clojure.lang.Keyword}) (class o))))
(defn transf [o]
(cond
(instance? java.util.List o) (into [] (map transf o))
(probably-bean? o) (into {} (seq (bean o)))
:else o))
(defn to-bean [o]
(clojure.walk/prewalk #(transf %) o))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.