使用JSONObject.toBean 反序列化时 对象时间属性被默认设置为当前系统时间的或传入时间为空报错的 解决办法

//就是这两行代码,传入postJSON的时间参数是正确的
JSONObject requestJsonObj = JSONObject.fromObject(postJSON);
//反序列化后order 对象中的data类型的属性全部被设置为了当前系统时
T_cp_order order = (T_cp_order) JSONObject.toBean(requestJsonObj, T_cp_order.class); 

问题原因:

查看JSONObject.toBean方法源码,发现该方法默认使用系统时间序列化

解决办法:

T_cp_order (实体类)添加静态代码块解决

static{
        String[] dateFormats = new String[] {"yyyyMMddHHmmss"};

//如果传入时间	全部不为空则只用使用这行即可 (有空时间参数则会运行报错)
//        net.sf.json.util.JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));

//如果传入json中有时间属性是空,则要使用这行 很不幸,楼主碰到的是这种情况
        net.sf.json.util.JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpherEx(new String[] {"yyyyMMddHHmmss"}, (Date) null));
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值