JSON(3):Java的Date类型转换为符合json语法的字符串遇到的问题及其解决办法
2013-06-20 17:35
603 查看
接着上篇文章,先看下面的代码:
Person.java :
运行程序得到:
这显然不是我们希望得到的格式。那么怎么解决呢?其实导入的相关jar包里已经给我们预留了我们所需要的接口JsonValueProcessor。
我们可以写一个转换器,并且选择实现框架给我们预留的接口JsonValueProcessor,实现接口中的方法,在这些方法里实现所需要的转换逻辑。
DateProcessor.java :
Person.java :
public class Person { private Date hire; public Date getHire() { return hire; } public void setHire(Date hire) { this.hire = hire; } public Person() { super(); } public Person(Date hire) { super(); this.hire = hire; } }Test.java :
public class Test { public static void main(String[] args) { test(); } public static void test(){ Person p=new Person(new Date()); JSONObject json=JSONObject.fromObject(p); String json_str=json.toString(); System.out.println(json_str); } }
运行程序得到:
{"hire": {"date":20,"day":4,"hours":17,"minutes":21,"month":5,"seconds":16, "time":1371720076781, "timezoneOffset":-480,"year":113} }
这显然不是我们希望得到的格式。那么怎么解决呢?其实导入的相关jar包里已经给我们预留了我们所需要的接口JsonValueProcessor。
我们可以写一个转换器,并且选择实现框架给我们预留的接口JsonValueProcessor,实现接口中的方法,在这些方法里实现所需要的转换逻辑。
DateProcessor.java :
public class DateProcessor implements JsonValueProcessor { private String pattern="yyyy-MM-dd"; public void setPattern(String pattern) { this.pattern = pattern; } @Override public Object processArrayValue(Object arg0, JsonConfig arg1) { Date date=(Date)arg0; SimpleDateFormat sdf=new SimpleDateFormat(pattern); return sdf.format(date); } @Override public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) { Date date=(Date)arg1; SimpleDateFormat sdf=new SimpleDateFormat(pattern); return sdf.format(date); } }然后改写Test.java :
public class Test { public static void main(String[] args) { test(); } public static void test(){ Person p=new Person(new Date()); DateProcessor processor=new DateProcessor(); JsonConfig config=new JsonConfig(); config.registerJsonValueProcessor(Date.class,processor); JSONObject json=JSONObject.fromObject(p,config); String json_str=json.toString(); System.out.println(json_str); } }此时再运行程序得到:
{"hire":"2013-06-20"}这样就可以将Date类型转换为我们希望要的格式。
相关文章推荐
- 关于java中long类型的数据转换json传到前台时丢失精度问题的解决办法
- 后台date类型转换为json字符串时,返回前台页面的是long time值问题解决
- 举例说明Android开发中遇到的 java.lang.ClassCastException: java.lang.String这个问题的原因及其解决办法
- 解决Java中Long类型转换成Json时,在Js代码调用时精度丢失的问题
- java实现插入mysql二进制文件,blob类型,遇到问题及解决办法
- 常见Java开发过程中遇到的问题及其解决办法
- android开发过程中将json日期字符串,转换成JAVA中Date类型格式化字符串
- java与json互相转换(解决日期问题),js显示json数据时出现日期类型显示[object,object]现象解决!
- java实现插入mysql二进制文件,blob类型,遇到问题及解决办法
- 关于如何将含有Date类型属性的对象转换成符合实际应用的Json字符串
- JSON(2):如何将一个java对象转换为一个符合json语法的字符串
- 关于java将String类型的时间字符串转换为Date类型的问题
- Java中数值较大的double类型转换为字符串时会用科学计数法显示的解决办法
- matlab数据类型转换遇到问题,及解决办法,sym,double ,vpa转换
- java与json互相转换(解决日期问题)
- 将java.util.Date类型转换成json时,使用JsonValueProcessor将date转换成希望的类型
- java与json互相转换(解决日期问题)
- 在VS2005/2008中字符串编码问题的解决及字符串和数值类型常用的转换方法
- 含有Date类型的对象或集合转换成json时的问题