FastJSON反序列化多级嵌套泛型对象失败,求方法
林二棍子 2018-02-23 04:48:15 目标是两层泛型的对象: ResObject<ReqObject<Order>>,fastjson版本1.2.35,测试例子如下:
ReqObject<Order> reqObj = new ReqObject<Order>();
Order order = new Order();
order.setMemberId(3);
order.setGoodsId((byte)1);
order.setOrderId(100l);
reqObj.setData(order);
reqObj.setPage(0);
reqObj.setSize(20);
String reqObjStr = JSON.toJSONString(reqObj);
System.out.println("第一次序列化:" + reqObjStr);
reqObj = JSON.parseObject(reqObjStr, new TypeReference<ReqObject<Order>>() {});
reqObjStr = JSON.toJSONString(reqObj);
System.out.println("第二次序列化:" + reqObjStr);
List<Order> orders = new ArrayList<Order>();
orders.add(order);
reqObj.setList(orders);
reqObjStr = JSON.toJSONString(reqObj);
System.out.println("第三次序列化:" + reqObjStr);
reqObj = JSON.parseObject(reqObjStr, new TypeReference<ReqObject<Order>>() {});
reqObjStr = JSON.toJSONString(reqObj);
System.out.println("第四次序列化:" + reqObjStr);
ResObject<ReqObject<Order>> resObj = ResObject.success("查询成功", reqObj);
String resObjStr = JSON.toJSONString(resObj);
System.out.println("第五次序列化:" + resObjStr);
resObj = JSON.parseObject(resObjStr,
new TypeReference<ResObject<ReqObject<Order>>>() {});
resObjStr = JSON.toJSONString(resObj);
System.out.println("第六次序列化:" + resObjStr);
输出结果:
第一次序列化:{"data":{"goodsId":1,"memberId":3,"orderId":100},"page":0,"size":20,"total":0}
第二次序列化:{"data":{"goodsId":1,"memberId":3,"orderId":100},"page":0,"size":20,"total":0}
第三次序列化:{"data":{"goodsId":1,"memberId":3,"orderId":100},"list":[{"goodsId":1,"memberId":3,"orderId":100}],"page":0,"size":20,"total":0}
第四次序列化:{"data":{"goodsId":1,"memberId":3,"orderId":100},"list":[{"goodsId":1,"memberId":3,"orderId":100}],"page":0,"size":20,"total":0}
第五次序列化:{"code":0,"data":{"data":{"goodsId":1,"memberId":3,"orderId":100},"list":[{"goodsId":1,"memberId":3,"orderId":100}],"page":0,"size":20,"total":0},"msg":"查询成功"}
第六次序列化:{}
求解决办法。