注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

JSON数据转换(指定日期格式)  

2011-10-11 20:21:36|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

JSON所依赖的包
1. commons-beanutils.jar
2. commons-collections-3.2.1.jar
3. commons-lang-2.5.jar
4. commons-logging-1.1.1.jar
5. ezmorph-1.0.6.jar
6. json-lib-2.2.3-jdk15.jar


写一个简单的测试 (指定日期格式处理JavaBean和JSON之间的相互转换)
1.一个测试Bean 两个属性 name 和 date

package com.platform.json.test;

import java.util.Date;

public class TestBean {
    private String name;
    private Date date;
   
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
 
}


2.JsonDateValueProcessor 实现 JsonValueProcessor 接口 定义对Java.util.Date类的处理方式

package com.platform.json.test;

import java.text.SimpleDateFormat;
import java.util.Date;

import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;

public class JsonDateValueProcessor implements JsonValueProcessor {
    private String datePattern = "yyyy-MM-dd";

    public JsonDateValueProcessor() {
        super();
    }

    public JsonDateValueProcessor(String format) {
        super();
        this.datePattern = format;
    }

    public Object processArrayValue(Object value, JsonConfig jsonConfig) {
        return process(value);
    }

    public Object processObjectValue(String key, Object value,
            JsonConfig jsonConfig) {
        return process(value);
    }

    private Object process(Object value) {
        try {
            if (value instanceof Date) {
                SimpleDateFormat sdf = new SimpleDateFormat(datePattern);
                return sdf.format((Date) value);
            }
            return value == null ? "" : value.toString();
        } catch (Exception e) {
            return "";
        }
    }

    public String getDatePattern() {
        return datePattern;
    }

    public void setDatePattern(String datePaterns) {
        this.datePattern = datePaterns;
    }
}

3.测试类,测试JavaBean和Json之间的星湖转换

package com.platform.json.test;

import java.text.SimpleDateFormat;
import java.util.Date;

import net.sf.ezmorph.object.DateMorpher;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.JSONUtils;

public class TestJson {

    /**
     * @author hjzheng
     */
    public static void main(String[] args) {
        //from javaBean to json
        TestBean tb = new TestBean();
        tb.setName("Book");
        tb.setDate(new Date());
       
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.registerJsonValueProcessor(Date.class,new JsonDateValueProcessor("dd-MM-yyyy"));
       
        JSONObject jo = JSONObject.fromObject(tb, jsonConfig);
        String jsonStr = jo.toString();

       
        System.out.println(jsonStr);
       
        //from json to JavaBean
       
        JSONObject jo2 = JSONObject.fromObject(jsonStr);
        String[] dateFormats = new String[] { "dd-MM-yyyy" };
        JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));
        TestBean tb2 = (TestBean) JSONObject.toBean(jo2, TestBean.class);

       
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
        System.out.println(sdf.format(tb2.getDate()));
      
    }

}

console 输出结果:

{"date":"11-10-2011","name":"Book"}
11-10-2011

  评论这张
 
阅读(1567)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017