J2SEに付属するJAXB実装を使用して、HashMapプロパティを含むBeanをシリアル化します。これは次のように述べているので、これは箱から出してすぐに機能するはずだと思います
JAXB仕様は、Beanのプロパティとして使用される場合のMapの特別な処理を定義します。たとえば、次のBeanは、次のようなXMLを生成します。
これは、構造に複数のレベルがない限り、多かれ少なかれ機能します。つまり、HashMapはBeanのプロパティであるBeanのプロパティであり、次のようになります。
import java.util.HashMap;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.JAXB;
class bean {
@XmlElement public HashMap<String,String> map;
}
@XmlRootElement class b2 {
@XmlElement public bean b;
}
class foo {
public static void main(String args[]) {
try {
bean b = new bean();
b.map = new HashMap<String,String>();
b.map.put("a","b");
b2 two = new b2();
two.b=b;
JAXB.marshal(two, System.out);
} catch (Exception e) {
System.out.println("Exception: " + e.toString());
}
}
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><b2><b><map/></b></b2>
これにより、正しくフォーマットされたHashMapの代わりに出力
されます。に注釈を付けbean
てfrom@XmlRootElement
を削除すると機能しますが、なぜそれが必要なのかわかりません。そんなはずなの?@XmlElement
map