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

use*_*372 2 java clojure

例如:

class Person {
    String name;
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

Ale*_*ler 6

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

public class Person {
  private String name;
  public Person(String n) {
    this.name = n;
  }
  public String getName() {
    return name;
  }
}
Run Code Online (Sandbox Code Playgroud)

使用这样:

(def p (Person. "xyz"))
(bean p)
;=> {:name "xyz" :class Person}
Run Code Online (Sandbox Code Playgroud)