遭遇fastjson的一个坑
最近在开发过程中踩到到了fastjson的一个坑,写出来跟大家分享一下,同时也留个记录。 public class Response<T> {
private int status;//用于标志调用状态
private T data;//实际数据
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public boolean isSuccess() {
return data != null ? true : false;
}
public void setSuccess(T data){
this.data = data;
this.status = SUCCESS;
//do something success
}
@Override
public String toString() {
return "Response{" +
"status=" + status +
",data=" + data +
'}';
}
}
如下实例化一个 Response<String> response = new Response<>();
response.setData("test");
response.setStatus(0);
String json = JSON.toJSONString(response);//fastjson序列化
System.out.println(json);//打印出序列化json
response = JSON.parSEObject(json,Response.class);//fastjson序列化反java对象
System.out.println(response);//打印出反序列化java对象
预计json序列化结果为: {"data":"test","status":0}
而实际用“,输出的json确实如下: {"data":"test","status":0,"success":true}
发现了没,序列化的json中多了一个 Response{status=0,data=true}
而不是: Response{status=0,data="test"}
这主要是Response不是一个标准的POJO类, (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |