//就是这两行代码,传入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));
}