工程

代码

package com.my.json.helper;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date; import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
/**
* 将Bean中的Timestamp、Date转换为json中的日期字符串
* @author zhangyi
*
*/
public class DateJsonValueProcessor implements JsonValueProcessor {
public static final String Default_DATE_PATTERN ="yyyy-MM-dd";
private DateFormat dateFormat ;
public DateJsonValueProcessor(String datePattern){
try{
dateFormat = new SimpleDateFormat(datePattern);}
catch(Exception e ){
dateFormat = new SimpleDateFormat(Default_DATE_PATTERN);
}
}
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
return process(value);
}
public Object processObjectValue(String key, Object value,JsonConfig jsonConfig) {
return process(value);
}
private Object process(Object value){
return dateFormat.format((Date)value);
}
}
package com.my.json.helper;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import net.sf.ezmorph.MorphException;
import net.sf.ezmorph.object.AbstractObjectMorpher; /**
* 将json串中的日期字符串转换为bean中的Timestamp、Date
*
* @author zhangyi
*
*/
public class TimestampMorpher extends AbstractObjectMorpher {
/*** 日期字符串格式 */
private String[] formats; public TimestampMorpher(String[] formats) {
this.formats = formats;
} public Object morph(Object value) {
if (value == null) {
return null;
}
if (Timestamp.class.isAssignableFrom(value.getClass())) {
return (Timestamp) value;
}
if (!supports(value.getClass())) {
throw new MorphException(value.getClass() + " 是不支持的类型");
}
String strValue = (String) value;
SimpleDateFormat dateParser = null;
for (int i = 0; i < formats.length; i++) {
if (null == dateParser) {
dateParser = new SimpleDateFormat(formats[i]);
} else {
dateParser.applyPattern(formats[i]);
}
try {
return new Timestamp(dateParser.parse(strValue.toLowerCase()).getTime());
} catch (ParseException e) {
e.printStackTrace();
}
}
return null;
} @Override
public Class morphsTo() {
return Timestamp.class;
} public boolean supports(Class clazz) {
return String.class.isAssignableFrom(clazz);
} }
package com.my.json.helper;

import java.sql.Timestamp;

import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.JSONUtils; public class Util { public static Object jsonToBean(String json,Class cls) {
String[] formats = { "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd" };
JSONUtils.getMorpherRegistry().registerMorpher(new TimestampMorpher(formats));
JSONObject jsonObject = JSONObject.fromObject(json);
return JSONObject.toBean(jsonObject, cls);
} public static String beanToJson(Object obj,String dateFormat) {
JsonConfig config = new JsonConfig();
config.registerJsonValueProcessor(Timestamp.class, new DateJsonValueProcessor(dateFormat));
JSONObject json = JSONObject.fromObject(obj, config);
return json.toString();
} }
package com.my.json.helper;

import java.sql.Timestamp;

public class Student {

    private int id;
private String name;
private int age;
private Timestamp birthday; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public Timestamp getBirthday() {
return birthday;
} public void setBirthday(Timestamp birthday) {
this.birthday = birthday;
} }
package com.my.json.helper;

import java.sql.Timestamp;

public class JsonTest {
public static void main(String[] args) { Student s = new Student();
s.setId(123456);
s.setName("李四");
s.setAge(20);
Timestamp b = Timestamp.valueOf("1992-10-19 23:52:18");//设置Timestamp、Date类型的值
s.setBirthday(b); //含有Timestamp、Date的bean转化为Json
String jsonStr = Util.beanToJson(s,"yyyy-MM-dd HH:mm:ss");
System.out.println(jsonStr); //json转为bean(含有Timestamp、Date)
Student s1 = (Student)Util.jsonToBean(jsonStr,Student.class);
System.out.println(s1.getBirthday().toLocaleString()); } }

含有Date和Timestamp的Java和Json互相转化的更多相关文章

  1. 含有Date属性的对象转化为Json

    含有Date类型属性的对象,转化为Json,Date属性并不是时间戳格式. 解决方法: 使用Jackson的注解@JsonFormat,添加到对象属性上方即可. 我们的北京时间会相差8个小时,因为我们 ...

  2. jackson/fastjson、mybatis、mysql date/datatime/timestamp、java Date/Timestamp关系详解

    jackson/fastjson序列化/反序列化: 默认情况下,jackson/fastjson将java Date/Timestamp类型序列化为时间戳,也就是1970年1月1日0点以来的毫秒数.如 ...

  3. JavaBean和json数据之间的转换(二)含有date类型的JavaBean

    1.前言 上次讲了简单的JavaBean和json格式之间的转换,代码很简单,但是实际过程中,往往用到的JavaBean都是比较复杂的,其他的字段还好,如果JavaBean中包含了date类型的字段, ...

  4. Java:String和Date、Timestamp之间的转

    Java:String和Date.Timestamp之间的转 一.String与Date(java.util.Date)互转 1.1 String -> Date String dateStr  ...

  5. Java:String和Date、Timestamp之间的转换

    一.String与Date(java.util.Date)互转 1.1 String -> Date String dateStr = "2016-9-28 12:25:55" ...

  6. Spring 整合 Flex (BlazeDS)无法从as对象 到 Java对象转换的异常:org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.util.Date' to required type 'java.sql.Timestamp' for property 'wfsj'; nested exception is java.lang.Ill

    异常信息如下: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value ...

  7. Java含有Date的对象序列化网络传输

    与短信接口对接时,Date从我这边传输以及在短信平台接收后转换出了问题 传入一个TemplateRequest对象 Feign接口 将含有Date的将要传输的TemplateRequest加上@Req ...

  8. [java]String和Date、Timestamp之间的转换

    一.String与Date(java.util.Date)互转  1.1 String -> Date Date date = DateFormat.parse(String  str); St ...

  9. Java:String和Date、Timestamp之间的转换【转】

    原文地址:http://yunnick.iteye.com/blog/1074495 一.String与Date(java.util.Date)互转 1.1 String -> Date Str ...

随机推荐

  1. JS,数组小练习

    var arr = [4, 0, 7, 9, 0, 0, 2, 6, 0, 3, 1, 0];要求将数组中的0项去掉,将不为0的值存入一个新的数组,生成新的数组 p.p1 { margin: 0.0p ...

  2. 【洛谷 P1352】没有上司的舞会

    树形dp #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; ...

  3. vim/vi 复制,删除,粘贴,查找,替换

    1.删除行 光标所在单行,dd  光标所在行以下的5行,5dd 全部删除:dG 2.复制 复制光标所在单行:yy 复制光标以下4行:4yy 3.粘贴 粘贴vi里复制的内容:p 粘贴外部复制过来的内容: ...

  4. c# 中定时器的用法

    来源于:http://blog.sina.com.cn/s/blog_62c501440100fog1.html System.Threading.Timer 是一个非常常用的定时器类,关于这个类的使 ...

  5. Java 字符串用逗号并接

    for (int t = 0; t < memberLen; t++) {  memTemp = stafferMap.get(strMember[t]);  if(memTemp != nul ...

  6. 斯坦福第四课:多变量线性回归(Linear Regression with Multiple Variables)

    4.1  多维特征 4.2  多变量梯度下降 4.3  梯度下降法实践 1-特征缩放 4.4  梯度下降法实践 2-学习率 4.5  特征和多项式回归 4.6  正规方程 4.7  正规方程及不可逆性 ...

  7. Python-同时匹配邮箱和电话号码的正则表达式

    同时匹配邮箱和电话号码的正则表达式要想很完美的匹配,不太简单. 各邮箱提供商的标准都多少有些许差别.如:163:6-18个字符,可使用字母.数字.下划线,需以字母开头. gmail:可以使用字母.数字 ...

  8. 帅呆了!ASP.NET Core每秒能处理115万个请求

    今天看到一篇英文博文 -- ASP.NET Core – 2300% More Requests Served Per Second,被震撼了!ASP.NET Core每秒能处理115万个请求(是的, ...

  9. Reading Notes of Acceptance Test Engineering Guide

    The Acceptance Test Engineering Guide will provide guidance for technology stakeholders (developers, ...

  10. github心得

    心得  : 1:安装:省略 2. 配置 Git 以及上传代码 安装 Git 成功后,如果是 Windows 下,选择 Git Bash ,在命令行中完成一切,可能开始有点麻 烦,不过就那几条命令行,用 ...