我有一个ResultMsg接受后台传过来的JSON
现在后台传过来的JSON是:
{"resultCode":1,"resultObject":{"userId":1,"petName":null,"userAge":null,"userSex":null,"userName":"admin","userPassword":"admin","hardIcon":null},"resultMsg":"登录成功"}
之后我利用JsonUtil工具类把 JSON数据转化成对象(其中resultObject是UserEntity类的类名):
resultMsg = JsonUtil.toObject(result, ResultMsg.class);
ResultMsg类
1 public class ResultMsg { 2 3 private int resultCode; 4 private Object resultObject; 5 private String resultMsg; 6 7 8 //get set…… 9 }
转换成的对象是:
他的Object类 我是想直接转换成UserEntity,但是他这边是LinkedHashMap,之后我把Object变成UserEntity
1 public class ResultMsg { 2 3 private int resultCode; 4 private UserEntity resultObject; 5 private String resultMsg; 6 7 8 //get set…… 9 }
这样一来,在调用JsonUtil的toObject方法的时候,可以把resultObject部分转化成我想要的UserEntity了这样是可以的
但是我想我这个ResultMsg肯定要是通用的啊,我就想了把他改成
1 public class ResultMsg<E> { 2 3 private int resultCode; 4 private E resultObject; 5 private String resultMsg; 6 7 8 //get set…… 9 }
然后在new对象的时候
ResultMsg<UserEntity> resultMsg = new ResultMsg<UserEntity>();
我原本以为他这边的<>里面是 UserEntity 那么对应的 ResultMsg类中的E也是UserEntity ,但是并不是 在转化的后 还是LinkedHashMap类型的
我现在就是想问下前辈们,如何写一个通用的ResultMsg类。。
下一个jackson看里面怎么做的呗。
/**
* 用于ajax请求,返回非list的的包装类
* @author dev4
*
*/
public class ObjectResult<T> implements Serializable{
/**
*
*/
private static final long serialVersionUID = 4543583458127221425L;
private T data;
private String message;
private AjaxResponseStatus status;
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public AjaxResponseStatus getStatus() {
return status;
}
public void setStatus(AjaxResponseStatus status) {
this.status = status;
}
public static <T>ObjectResult<T> success(String message, T data) {
ObjectResult<T> result = new ObjectResult<>();
result.setStatus(AjaxResponseStatus.SUCCESS);
result.setMessage(message);
result.setData(data);
return result;
}
public static <T>ObjectResult<T> success(String message) {
return success(message, null);
}
public static <T>ObjectResult<T> success() {
return success(null, null);
}
public static <T>ObjectResult<T> fail(String message) {
ObjectResult<T> result = new ObjectResult<>();
result.setStatus(AjaxResponseStatus.FAILED);
result.setMessage(message);
return result;
}
}
这是项目返回ajax请求的包装类,其中data类似你的resultObject,你可以看看找找感觉
是不是要序列化跟反序列化。
一开始用的是jackson写的工具类 之后我自己网上又找了阿里巴巴的fastson
通用的ResultMsgDto为
public class ResultMsgDto<E> implements Serializable { private static final long serialVersionUID = 123L; private int resultCode; private E resultObject; private String resultMsg; // get set }
使用方法是:
//UserDto这个是我要接收的 resultObject的 类型 ResultMsgDto<UserDto> resultMsgDto = new ResultMsgDto<UserDto>(); // 其中result是接收后台穿过来的json字符串 resultMsgDto = JSON.parseObject(result, new TypeReference<ResultMsgDto<UserDto>>() { });
乱码大家就无视、。。