Java Date转Json报错解决方案
报错信息为:
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:2155)
at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1323)
at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:762)
at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:837)
at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:426)
at net.sf.json.JSONObject.defaultBeanProcessing(JSONObject.java:749)
... 55 more
Caused by: java.lang.IllegalArgumentException
at java.sql.Date.getHours(Date.java:187)
... 65 more
原因:
java.sql.util.Date类的getHours方法已经被弃用,但是net.sf.json.JSONObject.fromObject(javaObject)进行json序列化的时候仍然调用了这个方法。
这篇博客中描述的很详细:https://segmentfault.com/a/1190000016937108
结局方法:
json-lib有一个配置类JsonConfig,通过JsonConfig可以注册一个字段处理器,通过实现JsonValueProcessor接口,将Date格式化后使用。
加入依赖:
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
实现接口:
@Test
public void testJson(){
Map<String, Object> mp = new ModelMap();
mp.put("server",server.getAll());
JsonConfig config = new JsonConfig();
config.registerJsonValueProcessor(java.sql.Date.class, new JsonValueProcessor() {
private SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
@Override
public Object processArrayValue(Object arg0, JsonConfig arg1) {
return null;
}
@Override
public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {
return arg1 == null ? "" : sd.format(arg1);
}
});
JSONObject jsonObject = JSONObject.fromObject(mp);
String msg = jsonObject.toString();
System.out.println(msg);
}
Java Date转Json报错解决方案的更多相关文章
- java.lang.NoSuchFieldError: VERSION_2_3_0 报错解决方案
java.lang.NoSuchFieldError: VERSION_2_3_0 at org.apache.struts2.views.freemarker.FreemarkerManager.c ...
- java String 转Json报错 java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntim
这个问题就是缺少jar包依赖!!! java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean 缺少commons-be ...
- Springboot实体类转JSON报错Could not find acceptable representation & 设置访问项目根路径的默认欢迎页面
=================实体类转JSON报错的解决办法============= 之前在springmvc的时候也报过这个错,原因以及springmvc中解决办法参考:https://www ...
- RabbitMQ>Erlang machine stopped instantly (distribution name conflict?). The service is not restarted as OnFail is set to ignore.-报错解决方案 原来是NNND。。。
>Erlang machine stopped instantly (distribution name conflict?). The service is not restarted as ...
- 用java运行Hadoop程序报错:org.apache.hadoop.fs.LocalFileSystem cannot be cast to org.apache.
用java运行Hadoop例程报错:org.apache.hadoop.fs.LocalFileSystem cannot be cast to org.apache.所写代码如下: package ...
- Updates were rejected because the remote contains work that you do(git报错解决方案)
Updates were rejected because the remote contains work that you do(git报错解决方案) 今天向GitHub远程仓库提交本地项目文件时 ...
- JMeter 报告监听器导入.jtl结果文件报错解决方案
JMeter 报告监听器导入.jtl结果文件报错解决方案 by:授客 QQ:1033553122 1. 问题描述 把jmeter压测时生成的 .jtl结果文件导入监听器报告中,弹出如下错误提示 ...
- fasterxml.jackson 将对象转换为json报错处理
最近在做查询的数据遇到如下报错: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found ...
- java连接数据库时的报错
//java连接数据库时的报错 1 package Java数据库编程; import java.sql.DriverManager; import java.sql.SQLException; im ...
随机推荐
- JavaScript内置排序方法sort实现排序操作
var arr = [10,8,6,9,1,7,2,13,5,1,9]; //sort排序 arr.sort(function(a,b){ //可以改变数组本身的排序方法 return a-b; }) ...
- Java高并发程序设计学习笔记(十):并发调试和JDK8新特性
转自:https://blog.csdn.net/dataiyangu/article/details/87631574 多线程调试的方法使用Eclipse进行多线程调试线程dump及分析分析死锁案例 ...
- vue下载后台传过来的乱码流的解决办法
后台返回的乱码流 解决办法: 请求方式用的是axios,主要加关键的 {responseType: 'blob'} axios封装 export function postDownload(url, ...
- Eclipse配置Maven的本地仓库和阿里云镜像 加速Maven更新
先确定自己电脑是否安装了Maven和安装位置,具体查询方法直接win+R键打开运行窗口,输入cmd打开dos窗口,再输入mvn -v即可查询安装的位置 拿到安装位置 D:\Applications\W ...
- 并发编程J.U.C之AQS剖析
一.j.u.c简介 在说主题AQS之前,我们有必要先来说一下J.U.C 顾名思义J.U.C就是java.util.concurrent,java并发工具包.由我们的并发大师老爷子Doug Lea亲自操 ...
- CPU排行
早期的时候,在某个网站上面收录下来的关于CPU排行的信息,发出来让更多的人看到,希望能够帮助到一些人!
- zencart清空产品商品实用命令
TRUNCATE TABLE categories; TRUNCATE TABLE categories_description;TRUNCATE TABLE meta_tags_categories ...
- zencart重置用户登录密码sql
zencart重置用户ID为99的登录密码为aaaaaaa ;
- Internet层协议下IP协议
Internet层协议特征 运行于 OSI 网络层面向无连接的协议独立处理数据包分层编址尽力而为传输无数据恢复功能 Internet层主要包含IP.ICMP.ARP.RARP几个协议. 这一主要说IP ...
- pycharm图像不能显示,之前是可以显示的。显示一两次突然不显示了
网上说是什么包问题的就说了.我遇到一个非常奇葩的问题 因为你的设置可能是这样 每次都在窗口右侧的工具栏那边显示.可能突然心情不佳就不显示了.然后你再把勾去掉即可.你要喜欢再点上也行.