工程

代码

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()); } }

最新文章

  1. Membership 重置密码
  2. Embedding Python in C
  3. 洛谷P2751 [USACO4.2]工序安排Job Processing
  4. C# foreach循环绑定key数组和value 数组(备用)
  5. Java网络编程(URL&amp;URLConnection)
  6. 杂烩:QWidget、QGraphics、QtQuick
  7. Fatal error: Call to undefined function oci_connect()
  8. 必须掌握的Linux命令
  9. 简单C程序,迷宫
  10. Android应用安全学习笔记前言
  11. JAVA提高二十:CopyOnWriteArrayList&amp;CopyOnWriteArraySet&amp;ConcurrentHashMap介绍
  12. loadrunner设置分压机 压力测试
  13. Thread.yield和join方法
  14. 笔记本电脑没有Pause键,远程桌面无法全屏
  15. 如何快速判断一个key是否存在在亿级数据中(bloomFilters)
  16. mongodb数据库集群及sharding分片配置
  17. Centos6.4 编译安装 nginx php
  18. 使用react-navigation时报错:undefined is not an object (evaluating rngesturehandlermodule.direction)
  19. [Java] Servlet工作原理之二:Session与Cookie
  20. Ubuntu 11.10 (Oneiric)上编译带utrace补丁的内核 转

热门文章

  1. JS初级-作用域
  2. C++调用动态库中的虚基类成员函数时总是进错函数
  3. 让谷歌浏览器 chrome 支持小于12px的字体
  4. Xamarin开发Android笔记:背景操作
  5. 仿SiteMap实现Asp.net 网站的菜单和权限管理
  6. xps 文件操作笔记
  7. 个性二维码开源专题&lt;替换元素点&gt;
  8. .NET Core竟然无法在Mac下进行build
  9. C语言 队列 顺序结构 实现
  10. 第十二章:Android数据存储(下)