注: 私はEclipseLink JAXB(MOXy)のリーダーであり、JAXB 2(JSR-222)エキスパートグループのメンバーです。
サークル
MOXyの場合、ゲッターに対応するセッターがないため、必要な注釈@XmlElement
はプロパティにあります。area
これ@XmlElement
は、JavaSE6以降に含まれています。
package forum10028037;
import javax.xml.bind.annotation.XmlElement;
class Circle{
private float radius;
private float pi;
public float getRadius() {
return radius;
}
public void setRadius(float radius) {
this.radius = radius;
}
public float getPi() {
return pi;
}
public void setPi(float pi) {
this.pi = pi;
}
@XmlElement
public float getArea(){
return pi * radius * radius;
}
}
デモ
package forum10028037;
import javax.xml.bind.*;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Circle.class);
Circle circle = new Circle();
circle.setPi(3.14f);
circle.setRadius(10.1f);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty("eclipselink.media-type", "application/json");
marshaller.setProperty("eclipselink.json.include-root", false);
marshaller.marshal(circle, System.out);
}
}
出力
{
"area" : 320.31143,
"pi" : 3.14,
"radius" : 10.1
}
詳細については