类
import lombok.Data;
@Data
public class ResponseResult<T> {
/**
* 处理结果
*/
private boolean success;
/**
* 未知
*/
private String requestid;
/**
* 发生异常事的错误码
*/
private String code;
/**
* 未说明
*/
private String msg;
/**
* 未说明
*/
private String detail;
/**
* 返回的数据
*/
private T data;
}
import java.util.List;
@Data
public class DataInfo<T> {
/**
* 未说明
*/
private boolean dataSuccess;
/**
* 未说明
*/
private String method;
/**
* 未说明
*/
private int returnstatus;
private List<T> message;
}
import java.io.Serializable;
@Data
public class DataMessage implements Serializable {
private String apimaterNo;
private String corpcode;
private String ismatch;
private String itemno;
private String remark;
private String requestno;
}
测试用例:
@Test
public void testCase1(){
String msg1="{\"success\":true,\"requestid\":\"0af8f5df\",\"code\":null,\"msg\":null,\"detail\":null,\"data\":{\"dataSuccess\":true,\"message\":[{\"apimaterNo\":\"hw-001\",\"corpcode\":\"44199880\",\"ismatch\":\"1\",\"itemno\":\"129004525\",\"remark\":\"对照\",\"requestno\":\"201912121336445344\"}],\"method\":\"addPurchaseApply\",\"returnstatus\":0}}";
// 写法一
TypeReference<ResponseResult<DataInfo<DataMessage>>> typeReference =
new TypeReference<ResponseResult<DataInfo<DataMessage>>>(ResponseResult.class, DataInfo.class, List.class, DataMessage.class){};
// ResponseResult responseResult = JSON.parseObject(msg1, new TypeReference<ResponseResult<DataInfo<DataMessage>>>(){});
ResponseResult responseResult = JSON.parseObject(msg1, typeReference);
// 写法二
// ResponseResult responseResult = JSON.parseObject(msg1,new TypeReference<ResponseResult<DataInfo>>(){});
System.out.println(JSON.toJSONString(responseResult.getData()));
}
运行结果:
方法一 异常
使用写法二能够正常转换,但是无法完成类型转换
严重程度:很严重
泛型转换:fastjson 版本 1.x.x 正常
fastjson 版本 2.0.1 上述转换报错
TEST
测试泛型转换,额外发现其中 2.0.(2|3)版本 中提供的api 不向下兼容?
method:public static String toJSONString(Object object, boolean prettyFormat){ ...}
1条答案
按热度按时间x9ybnkn61#
+1
33版本没有解决
1.x.x 正常