背景与问题
在处理Java参数传递时,参数可能使用到bean形式传递,用JsonUtil进行转化,报空指针。
处理方案
可将字符串使用 TypeReference 进行转换。
转化实例
使用电商案例,订单与订单明细关系,order
bean 需要系列化 即继承 implements Serializable。
订单信息
public class Order<T> implements Serializable{
/**
* 序列号
*/
private static final long serialVersionUID = 6652550451095312169L;
/**
* 订单号
*/
private String orderNo;
/**
* 支付金额
*/
private Long payAmount;
/**
* 商品数量
*/
private Long skuNum;
/**
* 明细集合
*/
private List<T> orderDetailList;
}
订单明细信息
public class OrderDetail implements Serializable{
/**
* 序列号
*/
private static final long serialVersionUID = 7157867993602926767L;
/**
* 订单号
*/
private String orderNo;
/**
* 明细ID
*/
private String detailId;
/**
* 商品名称
*/
private String skuName;
/**
* 支付金额
*/
private Long payAmount;
/**
* 商品数量
*/
private Long skuNum;
}
转化
String orderStr = "{\orderNo":"\123456"\}";
Order<OrderDetail> orderInfo = JSON.parseObject(JsonUtils.toJsonString(orderStr), new TypeReference<Order<OrderDetail>>(){});
logger.info("转换结果为:【%s】", JsonUtils.toJsonString(orderInfo));