加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

fastjson对Date的处理

发布时间:2020-12-16 18:59:54 所属栏目:百科 来源:网络整理
导读:对日期的序列化: 一种方法是通过注解 Java代码 @JSONField (format="yyyy-MM-dd HH:mm:ss") public Date birthday; 另一种是通过SerializeConfig: Java代码 private static SerializeConfig mapping = new SerializeConfig(); private static String dateF

对日期的序列化:

一种方法是通过注解

Java代码

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


另一种是通过SerializeConfig:

Java代码

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


json字符串中使用单引号:

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

字段显示不同的key:

public class User {  
    @JSONField(name="ID")  
    public int getId() { ... }  
}  
    
User user = ...;  
JSON.toJSONString(user); // {"ID":001}


自定义序列化代码示例:

public class JsonUtil {  
    private static SerializeConfig mapping = new SerializeConfig();  
    private static String dateFormat;  
    static {  
        dateFormat = "yyyy-MM-dd HH:mm:ss";  
    }  
   
    /** 
     * 默认的处理时间 
     *  
     * @param jsonText 
     * @return 
     */  
    public static String toJSON(Object jsonText) {  
        return JSON.toJSONString(jsonText,SerializerFeature.WriteDateUseDateFormat);  
    }  
   
    /** 
     * 自定义时间格式 
     *  
     * @param jsonText 
     * @return 
     */  
    public static String toJSON(String dateFormat,String jsonText) {  
        mapping.put(Date.class,new SimpleDateFormatSerializer(dateFormat));  
        return JSON.toJSONString(jsonText,mapping);  
    }  
}


自定义反序列化示例:

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

Java代码

public class MyDateFormatDeserializer extends DateFormatDeserializer {  
   
        private String myFormat;  
   
        public MyDateFormatDeserializer(String myFormat) {  
            super();  
            this.myFormat = myFormat;  
        }  
   
        @Override  
        protected <Date> Date cast(DefaultJSONParser parser,Type clazz,Object fieldName,Object val) {  
            if (myFormat == null) {  
                return null;  
            }  
            if (val instanceof String) {  
                String strVal = (String) val;  
                if (strVal.length() == 0) {  
                    return null;  
                }  
   
                try {  
                    return (Date) new SimpleDateFormat(myFormat).parse((String)val);  
                } catch (ParseException e) {  
                    throw new JSONException("parse error");  
                }  
            }  
            throw new JSONException("parse error");  
        }  
    }
转自:http://my.oschina.net/u/1444624/blog/375740

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读