json传递数据时日期格式变为LONG型报错
2017-11-02 11:14
507 查看
昨天项目上有个BUG,报了这个错误:
Response content:
{"result":"-1","resultMsg":"java.lang.IllegalArgumentException:
Cannot invoke com.hotent.core.model.BaseModel.setUpdatetime on bean class 'class com.hotent.platform.model.system.Resources'
- argument type mismatch - had objects of type \"java.lang.Long\" but expected signature \"java.util.Date\""}。
调接口的时候传给接口的参数Resources类里Updatetime时间类型date,传递的时候json传的是Long
这样接受参数的时候就报了如上类型不匹配的错误。
解决办法:
params.put("resources", JSON.toJSONString(resources));
改成
params.put("resources", JSON.toJSONStringWithDateFormat(resources,"yyyy-MM-dd"));
接口接收参数的时候做一下处理:
String json = request.getParameter("resources");
JSONObject obj = null;
Resources resources = null;
if(StringUtils.isNotEmpty(json)){
obj = JSONObject.fromObject(json);
String[] dateFormats = new String[]{"yyyy-MM-dd","yyyy-MM-dd HH:mm:ss"};
JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));
resources = (Resources) JSONObject.toBean(obj,Resources.class);
}
这样处理完之后就不报错了。
可是我不太理解的为什么修改之前,同样的接口,我调部署在本地的接口就不报错,调测试环境的接口就会报错。
Response content:
{"result":"-1","resultMsg":"java.lang.IllegalArgumentException:
Cannot invoke com.hotent.core.model.BaseModel.setUpdatetime on bean class 'class com.hotent.platform.model.system.Resources'
- argument type mismatch - had objects of type \"java.lang.Long\" but expected signature \"java.util.Date\""}。
调接口的时候传给接口的参数Resources类里Updatetime时间类型date,传递的时候json传的是Long
这样接受参数的时候就报了如上类型不匹配的错误。
解决办法:
params.put("resources", JSON.toJSONString(resources));
改成
params.put("resources", JSON.toJSONStringWithDateFormat(resources,"yyyy-MM-dd"));
接口接收参数的时候做一下处理:
String json = request.getParameter("resources");
JSONObject obj = null;
Resources resources = null;
if(StringUtils.isNotEmpty(json)){
obj = JSONObject.fromObject(json);
String[] dateFormats = new String[]{"yyyy-MM-dd","yyyy-MM-dd HH:mm:ss"};
JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));
resources = (Resources) JSONObject.toBean(obj,Resources.class);
}
这样处理完之后就不报错了。
可是我不太理解的为什么修改之前,同样的接口,我调部署在本地的接口就不报错,调测试环境的接口就会报错。
相关文章推荐
- SpringMVC传递json格式数据
- 将含有timestamp的json对象的毫秒数转成日期格式 ssh+jqery+json中timestamp数据问题
- 表格里的某个超链接点击执行的函数参数传递json对象格式的数据
- SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
- ajax处理请求,以JSON数据格式返回,(json时间日期返回时对象---》日期格式)
- .Net Core WebApi返回的json数据,自定义日期格式
- Spring Boot 日期数据格式转换@JsonFormat实例
- Js:消息弹出框、获取时间区间、时间格式、easyui datebox 自定义校验、表单数据转化json、控制两个日期不能只填一个
- 菜鸟入门,easyui datagrid装载json数据时日期格式解析
- 父子窗体间传递JSON格式的数据的代码
- android 用json格式同步数据库数据时遇到null值如何传递
- SpringMvc+ajax 实现json格式数据传递
- JSONObject.toBean中日期格式数据转换失效的解决办法! .
- JSON格式-给后台传递数据时需要注意的地方
- 可以传递多种数据格式AMFPHP,代替json和xml传输数据
- 后台返回json格式数据日期格式化
- SpringMvc+ajax 实现json格式数据传递
- SpringMVC中在使用@ResponseBody时如何将Date类型的日期返回指定格式的json数据
- 父子窗体间传递JSON格式的数据的代码
- jsp中将后台传递过来的json格式的list数据绑定到下拉菜单select