将Java POJO编组为JSON所需的最小结构是什么?
这很直截了当。将JavaPOJO编组为JSON所需的最低结构是什么 如果一个对象只有getter/setter,或者字段声明是必需的,那么可以将其作为JSON进行封送吗 Setter/Getter示例:将Java POJO编组为JSON所需的最小结构是什么?,java,json,marshalling,Java,Json,Marshalling,这很直截了当。将JavaPOJO编组为JSON所需的最低结构是什么 如果一个对象只有getter/setter,或者字段声明是必需的,那么可以将其作为JSON进行封送吗 Setter/Getter示例: class Circle{ private float radius; private float pi; // setter and getters for those aboce; public float getArea(){ // returns the computed
class Circle{
private float radius;
private float pi;
// setter and getters for those aboce;
public float getArea(){
// returns the computed area;
}
}
那么,如果Foo类中没有将“area”字段定义为字段,那么这样的对象可以作为JSON进行封送吗?还是必须显式声明POJO中的所有字段?这实际上取决于编组引擎。最近在Spring下使用jackson mapper,如果我没有getter操作(getArea()就是一个很好的例子),那么我的实例就无法正确地编组 假设地说,如果您有标准的bean set/get(或者在您的例子中是get),它应该是好的。如果您使用库,则不需要getter/setter: 示例来自:
注意:我是专家组的负责人和成员 圆圈 对于MOXy,唯一需要的注释是
区域
属性上的@xmlement
,因为没有与getter对应的setter。@xmlement
包含在Java SE 6及更高版本中:
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
}
了解更多信息
{
"area" : 320.31143,
"pi" : 3.14,
"radius" : 10.1
}