Java Beanをハッシュマップに変換してから、後でハッシュマップをJavaBeanに変換しようとしています。Javaオブジェクトをハッシュマップに変換するために、この投稿は私を助けました。 commons-beans BeanUtilsを使用して、JavaBeanをネストされた名前のキー/値マップに変換します
以下のコード
public class Ax {
String axAttr;
public String getAxAttr() {
return axAttr;
}
public void setAxAttr(String axAttr) {
this.axAttr = axAttr;
}
List<Bx> bxs;
public List<Bx> getBxs() {
return bxs;
}
public void setBxs(List<Bx> bxs) {
this.bxs = bxs;
}
}
public class Bx {
String bxAttr;
public String getBxAttr() {
return bxAttr;
}
public void setBxAttr(String bxAttr) {
this.bxAttr = bxAttr;
}
List<Cx> cxs = new ArrayList<Cx>();
public List<Cx> getCxs() {
return cxs;
}
public void setCxs(List<Cx> cxs) {
this.cxs = cxs;
}
}
public class Cx {
String cxAttr;
public String getCxAttr() {
return cxAttr;
}
public void setCxAttr(String cxAttr) {
this.cxAttr = cxAttr;
}
List<String> items;
public List<String> getItems() {
return items;
}
public void setItems(List<String> items) {
this.items = items;
}
}
以下は、に格納されているキーと値のペアです。HashMap
axAttr-> axString
bxs [0] .bxAttr-> bxString
bxs [0] .cxs [0] .cxAttr-> cxString
bxs [0] .cxs [0] .items[0]->1つの
bxs[ 0] .cxs [0] .items[1]->2つの
bxs[0].cxs [0] .items[2]->3つ
これらのキー値をに保存しDB
、後でそれらを取得して、JavaBeanに再度変換したいと思います。しかし、私が得てHashMap
いる助けを借りて同じものをJavaオブジェクトに変換するためにpropertyUtilsbean
NullPointerException.
これが私が実行した方法です:
public static void main(String[] args) throws Exception {
Ax ax = new Ax();
ax.setAxAttr("axString");
Bx bx = new Bx();
bx.setBxAttr("bxString");
Cx cx = new Cx();
cx.setCxAttr("cxString");
List<Bx> bxs = new ArrayList<Bx>();
ax.setBxs(bxs);
ax.getBxs().add(bx);
List<Cx> cxs = new ArrayList<Cx>();
bx.setCxs(cxs);
bx.getCxs().add(cx);
List<String> xs = new ArrayList<String>();
cx.setAxs(xs);
cx.getAxs().add(new String("One"));
cx.getAxs().add(new String("Two"));
cx.getAxs().add(new String("Three"));
MyPropertyUtils myPropertyUtils = new MyPropertyUtils();
Map map = new HashMap();
for (String name : myPropertyUtils.listNestedPropertyName(ax)) {
map.put(name, PropertyUtils.getNestedProperty(ax, name));
}
Ax axNew = new Ax();
Set<Entry> set = map.entrySet();
for (Entry entry :set) {
BeanUtils.setProperty(axNew, entry.getKey().toString(), entry.getValue().toString());
}
}
例外
Exception in thread "main" java.lang.NullPointerException
at org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:507)
at org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:410)
at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:768)
at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:846)
at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:903)
at org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:456)
at com.wavecrest.aspect.Test1.main(Test1.java:57)
すべての提案が受け入れられます: