jersey2x中,如何把客户端的JSON数据绑定到JAVA对象。

公司最近的一个项目,前端使用jquery,后端使用了jersey 2.x。
要把前段传到后端的JSON数据,反序列号成JAVA对象,首先要选择一个provider,Jersey中,可以选择的有jackson,或者Moxy,这里选择moxy做说明。
1. 在项目的pom.xml中引入moxy包
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-moxy</artifactId>  
</dependency>

2. 创建一个JAVA bean,这个bean里有个Date属性,需要特殊处理
@XmlRootElement
public class Annotation {
    private Integer id;
    
    @XmlJavaTypeAdapter(DateAdapter.class)
    private Date birthday;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

3. 创建反序列化成Date属性的插件
public class DateAdapter extends XmlAdapter<String,Date> {
    private static Logger logger = LogManager.getLogger(DateAdapter.class);

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    @Override
    public Date unmarshal(String v) throws Exception {
        return dateFormat.parse(v);
    }

    @Override
    public String marshal(Date v) throws Exception {

        return dateFormat.format(v);
    }
}


4. 创建Resource
@PUT
@Consumes(MediaType.APPLICATION_JSON)
public String create(final MyBean myBean) {
   myBean.getId();////这里就可以取得数据了
   myBean.getBirthday();//这里就可以取得数据了
}


5. 客户端的代码
    $.ajax({
        url:"xxxx/xx/zz",
        type:"POST",
        dataType:"json",
        contentType:'application/json; charset=utf-8',
        data:JSON.stringify({"id":"123","birthday":"2014-11-16"}),
        success:function(result){
            console.log(result);
        }
    });

你可能感兴趣的:(jersey2x中,如何把客户端的JSON数据绑定到JAVA对象。)