zoukankan      html  css  js  c++  java
  • JAVA对象转换为JSON及日期格式转换处理

    1.JSON日期格式转换

    默认JSON对DATE类型会转换成一个多属性对象, 而不是单独的一个字符串, 在某些应用处理上不是很方便,  可以利用JsonValueProcessor来实现日期的转换.

     默认格式:

        "createDate":{"nanos":0

              ,"time":1371721834000

              ,"minutes":50

              ,"seconds":34

              ,"hours":17

              ,"month":5

              ,"year":113

              ,"timezoneOffset":-480,"day":4

              ,"date":20

              },

    转换后格式:

    "createDate":"2013-06-20 17:50:34"

    方法:

    1.增加一个DateJsonValueProcessor类,如下:

    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import net.sf.json.JsonConfig;
    import net.sf.json.processors.JsonValueProcessor;
    
    /** 
     * JSON日期格式转换
     * 
    */
    public class DateJsonValueProcessor implements JsonValueProcessor
    {
        private String format = "yyyy-MM-dd HH:mm:ss";
    
        public DateJsonValueProcessor()
        {
    
        }
    
        public DateJsonValueProcessor(String format)
        {
    
            this.format = format;
        }
    
        public Object processArrayValue(Object value, JsonConfig jsonConfig)
        {
    
            String[] obj = {};
            if (value instanceof Date[])
            {
                SimpleDateFormat sf = new SimpleDateFormat(format);
                Date[] dates = (Date[]) value;
                obj = new String[dates.length];
                for (int i = 0; i < dates.length; i++)
                {
                    obj[i] = sf.format(dates[i]);
                }
            }
            return obj;
        }
    
        public Object processObjectValue(String key, Object value, JsonConfig jsonConfig)
        {
    
            if (value instanceof Date)
            {
                String str = new SimpleDateFormat(format).format((Date) value);
                return str;
            }
            return value;
        }
    
        public String getFormat()
        {
    
            return format;
        }
    
        public void setFormat(String format)
        {
    
            this.format = format;
        }
    
    }

    转换调用代码:

        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor());
        JSONObject jsonObj = JSONObject.fromObject(bean, jsonConfig);
        return jsonObj.toString();

    其中  bean 指的是你需要转为json的java对象。

    需要注意的是 代码中的 java.util.Date.class 要与对象中日期字段的类型一致,比如对象中的字段为 private Timestamp openAccountDate; 那么代码中 java.util.Date.class 应该改为 java.sql.Timestamp.class 

    转载请注明来源:http://www.cnblogs.com/conkis/

  • 相关阅读:
    【LeetCode每天一题】Pascal's Triangle(杨辉三角)
    【Redis】持久化
    【LeetCode每天一题】Swap Nodes in Pairs
    【LeetCode每天一题】Reverse String
    [bzoj2152]聪聪可可
    [bzoj3572][Hnoi2014]世界树
    Codeforces Round#409/VK-Cup 2017 Round2
    Educational Codeforces Round#19
    [bzoj4813][Cqoi2017]小Q的棋盘
    [bzoj4236]JOIOJI
  • 原文地址:https://www.cnblogs.com/conkis/p/3214830.html
Copyright © 2011-2022 走看看