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 ...
 
随机推荐
- warning C4819 的解决方法
			
编译VC++程序的时候出现如下提示警告: warning C4819: The file contains a character that cannot be represented in the ...
 - O047、 Cinder 组件详解
			
参考https://www.cnblogs.com/CloudMan6/p/5585637.html cinder-api cinder-api 是整个Cinder 组件的门户,所有cinde ...
 - macbook打印出现乱码解决方案
			
系统偏好设置 --> 打印机与扫描仪 --> + (左下角的加号) --> IP --> 输入打印机的ip地址,然后最下面的 “使用选择” 中选中 普通PCL 打印机,(默认的 ...
 - SmartBinding与kbmMW#2
			
前言 在之前的文章中,我介绍了SmartBinding作为Delphi的一个新的易于使用和智能的绑定框架.介绍了包括绑定对象,列表,常规数据和可视控件,以及如何使用导航器,所有这些都用代码做了演示. ...
 - linux中安装jdk+jmeter-
			
--------------linux中安装jdk+jmeter-------------------- 一.安装JDK7.0版本 .先卸载服务器自带的jdk软件包 # java -version # ...
 - 浅谈ROW_NUMBER() OVER()函数的使用
			
语法格式:row_number() over(partition by 分组列 order by 排序列 desc) row_number() over 具有分组排 ...
 - AWK程序设计语言
			
一. AWK入门指南 Awk是一种便于使用且表达能力强的程序设计语言,可应用于各种计算和数据处理任务.本章是个入门指南,让你能够尽快地开始编写你自己的程序.第二章将描述整个语言,而剩下的章节将向你展示 ...
 - python+Appium自动化:id元素定位
			
元素定位 与web自动化一样,app自动化元素定位也是非常重要的一环,,appium也是提供了很多元素定位的方法,比如:id.name.class.层级定位等等. 元素定位方式 id name cla ...
 - 7.2 jmu-Java-06异常-02-使用异常机制处理异常输入 (5分)
			
7.2 jmu-Java-06异常-02-使用异常机制处理异常输入 (5分) 使用异常处理输入机制,让程序变得更健壮. main方法: 输入n,创建大小为n的int数组. 输入n个整数,放入数组. ...
 - 方正科技win7重装系统
			
1.制作装机版U盘启动盘 老毛桃装机版制作启动U盘教程 http://www.laomaotao.org/jiaocheng/92/upqdzz.html 2.下载系统镜像文件保存至U盘启动盘 MSD ...