fastjson对Date的处理

对日期的序列化:

一种方法是通过注解

Java代码  

  1. @JSONField (format="yyyy-MM-dd HH:mm:ss")
  2. public Date birthday;

另一种是通过SerializeConfig:

Java代码  

  1. private static SerializeConfig mapping = new SerializeConfig();
  2. private static String dateFormat;
  3. static {
  4. dateFormat = "yyyy-MM-dd HH:mm:ss";
  5. mapping.put(Date.class, new SimpleDateFormatSerializer(dateFormat));
  6. }

json字符串中使用单引号:

String text = JSON.toJSONString(object, SerializerFeature.UseSingleQuotes);

字段显示不同的key:

Java代码  

  1. public class User {
  2. @JSONField(name="ID")
  3. public int getId() { ... }
  4. }
  5. User user = ...;
  6. JSON.toJSONString(user); // {"ID":001}

类的反序列化 JavaBean:

Java代码  

  1. String text = ...; // {"r":255,"g":0,"b":0,"alpha":255}
  2. Color color = JSON.parseObject(text, Color.class);

数组:

Java代码  

  1. String text = ...; // [{ ... }, { ... }]
  2. List<User> users = JSON.parseArray(text, User.class);

泛型:

Java代码  

  1. String text = ...; // {"name":{"name":"ljw",age:18}}
  2. Map<String, User> userMap = JSON.parseObject(text, new TypeReference<Map<String, User>>() {});

自定义序列化代码示例:

Java代码  

  1. public class JsonUtil {
  2. private static SerializeConfig mapping = new SerializeConfig();
  3. private static String dateFormat;
  4. static {
  5. dateFormat = "yyyy-MM-dd HH:mm:ss";
  6. }
  7. /**
  8. * 默认的处理时间
  9. *
  10. * @param jsonText
  11. * @return
  12. */
  13. public static String toJSON(Object jsonText) {
  14. return JSON.toJSONString(jsonText,
  15. SerializerFeature.WriteDateUseDateFormat);
  16. }
  17. /**
  18. * 自定义时间格式
  19. *
  20. * @param jsonText
  21. * @return
  22. */
  23. public static String toJSON(String dateFormat, String jsonText) {
  24. mapping.put(Date.class, new SimpleDateFormatSerializer(dateFormat));
  25. return JSON.toJSONString(jsonText, mapping);
  26. }
  27. }

自定义反序列化示例:

先自定义一个日期解析类:

Java代码  

  1. public class MyDateFormatDeserializer extends DateFormatDeserializer {
  2. private String myFormat;
  3. public MyDateFormatDeserializer(String myFormat) {
  4. super();
  5. this.myFormat = myFormat;
  6. }
  7. @Override
  8. protected <Date> Date cast(DefaultJSONParser parser, Type clazz, Object fieldName, Object val) {
  9. if (myFormat == null) {
  10. return null;
  11. }
  12. if (val instanceof String) {
  13. String strVal = (String) val;
  14. if (strVal.length() == 0) {
  15. return null;
  16. }
  17. try {
  18. return (Date) new SimpleDateFormat(myFormat).parse((String)val);
  19. } catch (ParseException e) {
  20. throw new JSONException("parse error");
  21. }
  22. }
  23. throw new JSONException("parse error");
  24. }
  25. }

Java代码  

  1. public class User {
  2. public String name;
  3. public int height;
  4. @JSONField(name = "com-google-com")
  5. public void setName(String name) {
  6. this.name = name;
  7. }
  8. @JSONField(format = "yyyy-MM/dd HH:mm:ss")
  9. public Date birthday;
  10. }

测试下:

Java代码  

  1. /**
  2. * @param args
  3. * @throws IOException
  4. */
  5. public static void main(String[] args) throws IOException, ParseException {
  6. String json = "{\"name\":\"22323\", \"age\": 1234," +
  7. " \"birthday\": \"2012-12/12 12:12:12\"}";
  8. Test t = JSON.parseObject(json, Test.class, mapping,
  9. JSON.DEFAULT_PARSER_FEATURE, new Feature[0]);
  10. System.out.println(t.name);
  11. System.out.println(t.height);
  12. System.out.println(t.birthday);
  13. System.out.println(
  14. new SimpleDateFormat("yyyy-MM/dd HH:mm:ss").parse("2012-12/12 12:12:12"));
  15. }

总结:对于JSONField注解,好像只对序列号的格式有影响,反序列化不管这个,不知道为什么,只能自己写个解析类了,不过这样就更灵活了,可以在里面写很多处理逻辑,比如json字符串里面日期格式并不是标准格式的时候,就可以先转成标准格式再去解析了。

另外,fastjson的document官网一直打不开,不知道神马原因,难道被feng了麽:

http://code.alibabatech.com/wiki/display/FastJSON/Documentation

http://yidao620c.iteye.com/blog/2036853

时间: 2024-10-11 17:07:02

fastjson对Date的处理的相关文章

fastjson使用

简介 Fastjson是一个Java语言编写的高性能功能完善的JSON库. 高性能 fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson.并且还超越了google的二进制协议protocol buf. 支持标准 Fastjson完全支持http://json.org的标准,也是官方网站收录的参考实现之一. 功能强大 支持各种JDK类型.包括基本类型.JavaBean.Collection.Map.Enum.泛型等.支持循环引用 无依赖

Fastjson介绍

简单介绍 Fastjson是一个Java语言编写的高性能功能完好的JSON库. 高性能 fastjson採用独创的算法,将parse的速度提升到极致,超过全部json库,包含以前号称最快的jackson.而且还超越了google的二进制协议protocol buf. 支持标准 Fastjson全然支持http://json.org的标准,也是官方站点收录的參考实现之中的一个. 功能强大 支持各种JDK类型.包含基本类型.JavaBean.Collection.Map.Enum.泛型等. 支持循环

Fastjson 的简单使用&lt;转&gt;

简介 Fastjson是一个Java语言编写的高性能功能完善的JSON库. 高性能 fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson.并且还超越了google的二进制协议protocol buf. 支持标准 Fastjson完全支持http://json.org的标准,也是官方网站收录的参考实现之一. 功能强大 支持各种JDK类型.包括基本类型.JavaBean.Collection.Map.Enum.泛型等. 支持循环引用 无依

FastJson 数组、List、Set、Map基本序列化与日期格式化

摘要: FastJson可以直接序列化数组.List.Set.Map等,也可以直接支持日期类型数据的格式化,包括java.util.Date.java.sql.Date.java.sql.Timestamp.java.sql.Time. FastJson不仅可以支持普通数组.List.Set.Map序列化,也可以支持转载对应的数组.List.Set.Map序列化. 默认情况下,FastJson将Date类型序列化为long,序列化和反序列化的过程不会导致时区问题. FastJson还提供了基于格

6.11 星期二

一.beetlsql学习 二.datagrid的formatter  $('#dg').datagrid({    columns:[[        {field:'userId',title:'User', width:80,            //value 当前列的值            //row 当前行(是一个对象)            //index 当前行的索引            formatter: function(value,row,index){      

6.10-----6.16

6.4 星期二 1.fit= true    自动适应大小  border=true  存在边框 2.datagridvar datagrid;$(function(){    $('#datagrid').datagrid({        //请求数据的服务器端的地址        url:'',        //datagrid标题        title:'',        //datagrid图标        iconCls:'',        //是否进行分页      

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

jackson/fastjson序列化/反序列化: 默认情况下,jackson/fastjson将java Date/Timestamp类型序列化为时间戳,也就是1970年1月1日0点以来的毫秒数.如果要显示为用户友好表示: Jackson 可以: SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); objectMapper.setDateFormat(sdf)或者:@JsonFormat(locale

对FastJson的封装Util

/** * FastJson常用帮助类 * @author huangxincheng * */ public class FastJsonUtil { private static final SerializeConfig CONFIG = new SerializeConfig(); private static final String FORMAT_TIME = "yyyy-MM-dd HH:mm:ss"; private static final String FORMAT

Android fastjson

Fastjson介绍 Fastjson是一个Java语言编写的JSON处理器. 1.遵循http://json.org标准,为其官方网站收录的参考实现之一. 2.功能qiang打,支持JDK的各种类型,包括基本的JavaBean.Collection.Map.Date.Enum.泛型. 3.无依赖,不需要例外额外的jar,能够直接跑在JDK上. 4.开源,使用Apache License 2.0协议开源.http://code.alibabatech.com/wiki/display/FastJ