如何在clojure中将java对象转换为地图?

时间:2014-06-05 03:06:22

标签: java clojure

例如:

class Person {
    String name;
}

我想从Person的实例中获取{:name "xxx}

我知道(from_json (.toJson person))可以做到。

有没有更好的方法来实现它?

2 个答案:

答案 0 :(得分:6)

您是否看过bean功能?上面的示例代码不遵循JavaBean规则,但如果您的对象执行(使用getter),那么bean将为您将其转换为Clojure映射。

public class Person {
  private String name;
  public Person(String n) {
    this.name = n;
  }
  public String getName() {
    return name;
  }
}

像这样使用:

(def p (Person. "xyz"))
(bean p)
;=> {:name "xyz" :class Person}

答案 1 :(得分:0)

几年前,我写了一个小图书馆。

https://github.com/joodie/clj-java-fields/