您的位置:首页 > 编程语言 > Java开发

JSON转换为JAVA对象及日期格式转换处理

2012-07-26 13:58 519 查看
1.JSON日期格式转换

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

 默认格式:

"lastUpdate": {

                "date": 29,

                "day": 3,

                "hours": 14,

                "minutes": 46,

                "month": 1,

                "seconds": 41,

                "time": 1330498001000,

                "timezoneOffset": -480,

                "year": 112

            },

转换后格式:

"lastUpdate": "2012-02-29 14:46:41"

自定义一个日期处理器:

DateJsonValueProcessor是实现了一个JsonValueProcessor接口(两种方式)

[java] view
plaincopy

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;  

    }  

  

}  

或:

[java] view
plaincopy

package org.ymm.util;  

  

import java.text.SimpleDateFormat;  

import net.sf.json.JsonConfig;  

import net.sf.json.processors.JsonValueProcessor;  

  

public class DateJsonValueProcessor implements JsonValueProcessor  

{  

      

    private String format;  

    public DateJsonValueProcessor(String format){  

        this.format = format;  

    }  

      

    public Object processArrayValue(Object value, JsonConfig jsonConfig)  

    {  

        return null;  

    }  

  

    public Object processObjectValue(String key, Object value, JsonConfig jsonConfig)  

    {  

        if(value == null)  

        {  

            return "";  

        }  

        if(value instanceof java.sql.Timestamp)  

        {  

            String str = new SimpleDateFormat(format).format((java.sql.Timestamp)value);  

            return str;  

        }  

        if (value instanceof java.util.Date)  

        {  

            String str = new SimpleDateFormat(format).format((java.util.Date) value);  

            return str;  

        }  

          

        return value.toString();  

    }  

}  

转换调用代码:

public String queryEmpAll() throws IOException{
System.out.println("queryEmpAll!!!!!!!!!!!!!!!!!!!!!!!");
// PrintWriter out=ServletActionContext.getResponse().getWriter();

JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor());
jsonConfig.registerJsonValueProcessor(java.sql.Timestamp.class, new JsonDateValueProcessor());

Map map=new HashMap();
map.put("total", 3);
map.put("data", ies.getAll());

JSONObject jn=JSONObject.fromObject(map,jsonConfig);

System.out.println(jn.toString());
// out.print(jn.toString());
return null;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  json java date bean string