springmvc项目中把jackson替换成fastjson遇到问题
@RequestMapping("/testBind")
@ResponseBody
public String testBind(@RequestBody MgQueryCondition<TestBean> queryCondition){
System.out.println(queryCondition);
return "success";
}
上面的controller接收参数时,只有外层的MgQueryCondition转换成功了,内部的TestBean类型转化失败。
转换时针对泛型类型,使用TypeReference进行解析可以,但是这样@requestbody注解就没办法用了。
请问目前有办法解决吗?谢谢
6条答案
按热度按时间nimxete21#
1.2.15新版本的com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4应该支持的,你试试看?
xe55xuns2#
thank you
9wbgstp73#
@lqs0112 FastJsonHttpMessageConverter是对泛型类型完全支持的, 请见testcase #758.
FastJsonHttpMessageConverterTest.test4()
8iwquhpp4#
@lqs0112 不知为何好多泛型会出现问题, 请提供一下测试数据或测试用例.
ohfgkhjo5#
@wenshao 多谢,spring升级到4.3,使用1.2.15版的FastJsonHttpMessageConverter4参数转化没有问题
fxnxkyjh6#
@VictorZeng 之前一直使用的4.1.16的spring,使用FastJsonHttpMessageConverter确实不支持泛型转化。
页面post请求参数:
{"pageNo":1,"cond":{"fltNo":"ZH9015","arrdep":"D","queryDate":"1471708800000"}}
服务端方法:
OpRst getFlightsByFltNoCond(@requestbody PageCond pageCond){
}
/**
分页查询条件
@author liqingshan
*/
public class PageCond {
private int pageNo;
private int pageSize = 10;
private T cond;
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public T getCond() {
return cond;
}
public void setCond(T cond) {
this.cond = cond;
}
}
/**
航班号查询条件
@author liqingshan 2016-01-12
*/
public class FltNoCond {
private String fltNo;
private ArrdepFlag arrdep;
private Date queryDate;
public String getFltNo() {
return fltNo;
}
public void setFltNo(String fltNo) {
this.fltNo = fltNo;
}
public ArrdepFlag getArrdep() {
return arrdep;
}
public void setArrdep(ArrdepFlag arrdep) {
this.arrdep = arrdep;
}
public Date getQueryDate() {
return queryDate;
}
public void setQueryDate(Date queryDate) {
this.queryDate = queryDate;
}
}
接收到的结果:
pageCond.cond为空