`
gaojingsong
  • 浏览: 1201561 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Json关于java.sql.Date的处理

阅读更多

步骤一 、 VO类

import java.sql.Date;

 

public class User {

    //实体类的属性和表的字段名称一一对应

    private int id;

    private String name;

    private int age;

    private Date hire_date;

}

 

 

步骤二 、数据库表:

/*

Navicat MySQL Data Transfer

Source Server         : localhost

Source Server Version : 50051

Source Host           : localhost:3306

Source Database       : test

 

Target Server Type    : MYSQL

Target Server Version : 50051

File Encoding         : 65001

Date: 2016-05-17 20:46:04

*/

 

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for `user`

-- ----------------------------

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

  `id` int(11) NOT NULL auto_increment,

  `name` varchar(30) default NULL,

  `age` int(11) default NULL,

  `hire_date` datetime default NULL,

  PRIMARY KEY  (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

 

-- ----------------------------

-- Records of user

-- ----------------------------

INSERT INTO `user` VALUES ('1', 'zhangsan', '12', '2016-05-17 20:06:38');

 

步骤三、开始转换

Exception in thread "main" net.sf.json.JSONException: java.lang.reflect.InvocationTargetException

at net.sf.json.JSONObject.defaultBeanProcessing(JSONObject.java:818)

at net.sf.json.JSONObject._fromBean(JSONObject.java:699)

at net.sf.json.JSONObject.fromObject(JSONObject.java:172)

at net.sf.json.AbstractJSON._processValue(AbstractJSON.java:274)

at net.sf.json.JSONObject._processValue(JSONObject.java:2655)

at net.sf.json.JSONObject.processValue(JSONObject.java:2721)

at net.sf.json.JSONObject.setInternal(JSONObject.java:2736)

at net.sf.json.JSONObject.setValue(JSONObject.java:1424)

at net.sf.json.JSONObject.defaultBeanProcessing(JSONObject.java:765)

at net.sf.json.JSONObject._fromBean(JSONObject.java:699)

at net.sf.json.JSONObject.fromObject(JSONObject.java:172)

at net.sf.json.JSONObject.fromObject(JSONObject.java:134)

at mybatistest.mybatisdemo.MultiDataSource.main(MultiDataSource.java:50)



 

解决方案一:datetime  -->String

   select id,name ,age,CONCAT(hire_date,'') from user

 

解决方案二:增加函数转为util.Date进行处理

      /** 

* 将java.util.Date日期转化为java.sql.Date 

* @param udate 

* @return 

*/  

public static java.sql.Date converUtilToSql(java.util.Date udate) {  

   return new java.sql.Date(udate.getTime());  

}  

 

/** 

* 将java.sql.Date日期转化为java.util.Date 

* @param udate 

* @return 

*/  

public static java.util.Date converSqlToUtil(java.sql.Date udate) {  

   return new java.util.Date(udate.getTime());  

 

 

处理结果如下:

{"age":12,"hire_date":{"date":17,"day":2,"hours":0,"minutes":0,"month":4,"seconds":0,"time":1463414400000,"timez

oneOffset":-480,"year":116},"id":1,"name":"zhangsan"}

 

解决方案三:自定义转换器

核心代码如下:

               JsonConfig jsonConfig = new JsonConfig();

jsonConfig.registerJsonValueProcessor(java.sql.Date.class, new JsonDateValueProcessor());

JSONObject json = JSONObject.fromObject(user,jsonConfig);

System.out.println("=====total count getUser====" + json);

 

        public class JsonDateValueProcessor implements JsonValueProcessor {

      private String format = "yyyy-MM-dd";

     public Object processArrayValue(Object arg0, JsonConfig arg1) {

System.out.println("====processArrayValue======== "+arg0);

return null;

      } 

 

    public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {

System.out.println("====processObjectValue======== "+arg0 +",arg1="+arg1);

return processJsonDateValue(arg1);

   }

 

private Object processJsonDateValue(Object arg0) {

SimpleDateFormat sdf=new SimpleDateFormat(format);

return sdf.format(arg0);

}

 

}

处理结果如下:

=====total count getUser====User [id=1, name=zhangsan, age=12,hire_date=2016-05-17]

====processObjectValue======== hire_date,arg1=2016-05-17

=====total count getUser===={"age":12,"hire_date":"2016-05-17","id":1,"name":"zhangsan"}

 

 

  • 大小: 34.6 KB
  • 大小: 45.3 KB
  • 大小: 23.2 KB
0
1
分享到:
评论

相关推荐

    json与java对象互转

    .registerTypeAdapter(java.sql.Date.class, new SQLDateSerializer()) .registerTypeAdapter(java.util.Date.class, new UtilDateSerializer()) .setDateFormat(DateFormat.LONG) .setPrettyPrinting() ....

    Json处理工具类

    - `java.sql.Date`: SQL日期处理。 - `java.text.ParseException`: 解析异常处理。 - `java.text.SimpleDateFormat`: 日期格式化。 - `java.util.ArrayList`: 动态数组实现。 - `java.util.List`: 定义列表接口。 - ...

    MySql于Java数据类型对应列表

    **JAVA类型:** `java.sql.Date` **JDBC类型:** 91 **描述:** `DATE` 用于存储日期值(年月日)。在Java中,它被映射为 `Date` 类型。 ##### 16. TIME (时间) **显示长度:** 8 **数据库类型:** TIME **JAVA类型...

    json示例.docx

    Java提供了多种方式来处理日期时间,包括使用java.util.Date类、使用java.sql.Date类、使用java.time包中的类等。不同的方式都有其优缺,选择合适的方式取决于项目的需求和复杂度。 集合操作 在该代码中,我们可以...

    java_code_for_common_functions.rar_JSON_java json_jquery_数据库 转换

    Java提供了`java.util.Date`和`java.time`包来处理日期和时间。在给定的代码中,可能包含了创建、比较和格式化日期的函数。例如,`formatDateTime()`函数可能使用`SimpleDateFormat`或`DateTimeFormatter`将日期...

    java进行时间的转换

    String formattedDate = date.format(formatter); ``` 3. 时间戳转换: - 时间戳是以毫秒为单位的自1970年1月1日以来的总时间。`Date`类可以与时间戳相互转换: ```java long timestamp = System....

    json转换工具,支持日期

    3. `SqlDateProcessor.java`和`UtilDateProcessor.java`: 这两个类与`TimestampProcessor`类似,分别处理`java.sql.Date`和`java.util.Date`类型。由于这些日期类型在JSON中表示方式的不同,自定义处理器可以确保...

    比较全的java工具类

    - `java.util.Date` 和 `java.util.Calendar`:这两个类是Java早期用于处理日期和时间的基础类,但设计上存在一些问题,如非线程安全和API复杂。 - `java.time` 包:Java 8引入的新时间日期API,包含`LocalDate`, ...

    java获取时间大全

    - `java.sql.Date`:专门用于处理SQL日期,不包含时间部分。 - `java.time.LocalDate`:Java 8引入的新类,用于表示没有时间信息的日期。 - `java.time.LocalDateTime`:包含了日期和时间,但不包含时区信息。 2...

    fastJSON.docx

    FastJSON 直接支持日期类型数据的格式化,包括 java.util.Date、java.sql.Date、java.sql.Timestamp、java.sql.Time。 FastJSON 还提供了基于格式化输出的 SerializerFeature,例如 WriteDateUseDateFormat,能够...

    fastJSON使用.docx

    FastJSON 直接支持日期类型数据的格式化,包括 java.util.Date、java.sql.Date、java.sql.Timestamp、java.sql.Time。缺省情况下,FastJSON 将 Date 类型序列化为 long,这个使得序列化和反序列化的过程不会导致时区...

    fastJSON.pdf

    FastJSON 直接支持日期类型数据的格式化,包括 java.util.Date、java.sql.Date、java.sql.Timestamp、java.sql.Time。缺省情况下,FastJSON 将 Date 类型序列化为 long,这个使得序列化和反序列化的过程不会导致时区...

    fastJSON使用.pdf

    FastJSON 直接支持日期类型数据的格式化,包括 java.util.Date、java.sql.Date、java.sql.Timestamp、java.sql.Time。缺省情况下,FastJSON 将 Date 类型序列化为 long,这个使得序列化和反序列化的过程不会导致时区...

    java常用包2 81个

    7. `java.sql`:用于数据库操作,包括连接、查询、事务处理等,如`Connection`、`Statement`、`ResultSet`。 8. `java.nio`:提供了一种非阻塞I/O模型,提高了性能,如`Buffer`、`Channel`、`Selector`。 9. `java...

    Java类库-适合初学者学习Java编程语言

    14. **JSON支持**:Java 11引入了`java.json`包,提供了对JSON格式的数据处理,包括解析和生成JSON。 15. **Java EE(企业版)**:包含Servlet、JSP、EJB等技术,用于构建分布式企业级应用。 以上只是Java类库中的...

    mysql-connector-java-8.0.19_Java8_MYSQL_源码

    在Java 8中,引入了若干新特性,如lambda表达式、Stream API和Date/Time API等,这些都使得开发更加高效。而MySQL Connector/J 8.0.19版本则确保了与Java 8的良好兼容性,允许开发者充分利用这些新特性进行数据库...

    java开发常见工具类

    本文将详细讲解几个常见的Java工具类,包括地址解析工具、日期操作工具、邮件工具、JSON工具以及SQL工具,这些工具类极大地提高了开发效率。 1. 地址解析工具:在处理网络相关的任务时,例如获取或设置IP地址、域名...

    JsonQuery:基于 Java 的 JSON 查询引擎

    单节点运算符允许您一次处理一个节点的 JSON 树。 例如,一个深度嵌套的 JSON 字段 "company":{ "sales":{ "international":{ "reps":[ { "name":"bob", "start date":5-17-06", "monthly...

    dhtmlxscheduler 动态实例(jsp+java+sql server).docx

    总的来说,这个dhtmlxscheduler动态实例展示了如何在Java Web应用中集成dhtmlxscheduler,通过jsp页面与用户交互,Java后端处理业务逻辑,以及SQL Server作为数据存储。整个流程涉及到前端界面展示、后端数据处理和...

Global site tag (gtag.js) - Google Analytics