<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dict.CN 在線詞典, 英語學習, 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統計

    留言簿(23)

    積分與排名

    優秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    java與json互相轉換(解決日期問題)

    source:
    http://hi.baidu.com/learnfordba/blog/item/0ee6cdfb7d61fb859f5146f8.html


    JSON 即 JavaScript Object Natation,它是一種輕量級的數據交換格式,非常適合于服務器與 JavaScript 的交互。本文主要講解下java和JSON之間的轉換,特別是解決互相轉換遇到日期問題的情況。
        一、需要相關的jar包:
        json
    -lib-xxx.jar
        ezmorph
    -xxx.jar
        commons
    -httpclient-xxx.jar
        commons
    -lang-xxx.jar
        commons
    -logging-xxx.jar
        commons
    -collections-xxx.jar
        上面的包可以從下面的連接下載:
        http:
    //commons.apache.org/index.html
        http://json-lib.sourceforge.net
        http://ezmorph.sourceforge.net
       二、java-》JSON
         
    1.List-》JSON
    view plaincopy to clipboardprint
    ?
    List
    <String> list = new ArrayList<String>();
    list.add(
    "apple");
    list.add(
    "orange");
    JSONArray jarr 
    = JSONArray.fromObject(list);
    System.out.println(
    "list->json:" + jarr.toString());

        打印結果:list
    ->json:["apple","orange"]
         
    2.Map-》JSON

    view plaincopy to clipboardprint
    ?
    Map
    <String, Object> map = new HashMap<String, Object>();
    map.put(
    "name""Michael");
    map.put(
    "baby"new String[] { "Lucy""Lily" });
    map.put(
    "age"30);
    JSONObject jo 
    = JSONObject.fromObject(map);
    System.out.println(
    "map->json:" + jo.toString());

        打印結果:map
    ->json:{"age":30,"name":"Michael","baby":["Lucy","Lily"]}
        
    3.bean->JSON

    view plaincopy to clipboardprint
    ?
    JsonBean bean 
    = new JsonBean();
    bean.setName(
    "NewBaby");
    bean.setAge(
    1);
    bean.setBorn(
    new Date());
    jo 
    = JSONObject.fromObject(bean);
    System.out.println(
    "bean->json:" + jo.toString());

    打印結果:bean
    ->json:{"age":1,"born":{"date":10,"day":3,"hours":14,"minutes":14,"month":2,"seconds":1,"time":1268201641228,"timezoneOffset":-480,"year":110},"name":"NewBaby"}
       這時你會發現它把bean對象里的util.Date這個類型的所有屬性一一轉換出來。在實際運用過程中,大多數情況下我們希望能轉化為yyyy
    -MM-dd這種格式,下面就講一講如何實現:
       首先要寫一個新的類JsonDateValueProcessor如下:

    view plaincopy to clipboardprint
    ?
    /**
    * JSON 日期格式處理(java轉化為JSON)
    @author Michael sun
    */
    public class JsonDateValueProcessor implements JsonValueProcessor {

        
    /**
         * datePattern
         
    */
        
    private String datePattern = "yyyy-MM-dd";

        
    /**
         * JsonDateValueProcessor
         
    */
        
    public JsonDateValueProcessor() {
            
    super();
        }

        
    /**
         * 
    @param format
         
    */
        
    public JsonDateValueProcessor(String format) {
            
    super();
            
    this.datePattern = format;
        }

        
    /**
         * 
    @param value
         * 
    @param jsonConfig
         * 
    @return Object
         
    */
        
    public Object processArrayValue(Object value, JsonConfig jsonConfig) {
            
    return process(value);
        }

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

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

        }

        
    /**
         * 
    @return the datePattern
         
    */
        
    public String getDatePattern() {
            
    return datePattern;
        }

        
    /**
         * 
    @param pDatePattern the datePattern to set
         
    */
        
    public void setDatePattern(String pDatePattern) {
            datePattern 
    = pDatePattern;
        }

    }

    測試代碼:

    view plaincopy to clipboardprint
    ?
    JsonBean bean 
    = new JsonBean();
    bean.setName(
    "NewBaby");
    bean.setAge(
    1);
    bean.setBorn(
    new Date());

    JsonConfig jsonConfig 
    = new JsonConfig();
    jsonConfig.registerJsonValueProcessor(Date.
    class,new JsonDateValueProcessor());

    JSONObject jo 
    = JSONObject.fromObject(bean, jsonConfig);
    System.out.println(
    "bean->json:" + jo.toString());

    打印結果:bean
    ->json:{"age":1,"born":"2010-03-10","name":"NewBaby"}
    這就能得到我們想要的結果了。

    三、JSON
    -》java
    1.如何把json的yyyy-MM-dd的轉換為Bean中的util.Date類型:
    view plaincopy to clipboardprint
    ?
    JSONUtils.getMorpherRegistry().registerMorpher(
              
    new DateMorpher(new String[] { "yyyy-MM-dd" }));

    String jsonStr 
    = "[{\"name\": \"husband\", \"age\": \"26\", \"born\": \"1984-01-12\"},{\"name\": \"wife\", \"age\": \"20\", \"born\": \"1990-05-01\"}]";

    Collection
    <JsonBean> list = JSONArray.toCollection(JSONArray.fromObject(jsonStr), JsonBean.class);
          
    //DateUtil.getFormatDate(date,fmtstr)日期轉字符串這里不再寫代碼了
    for (JsonBean o : list) {
       System.out.println(DateUtil.getFormatDate(o.getBorn(), 
    "yyyy-MM-dd"));
    }

    打印結果:
               
    1984-01-12
              
    1990-05-01
       
    2. JSON-》List、 Map
    view plaincopy to clipboardprint
    ?
    String listStr 
    = "[\"apple\",\"orange\"]";
    Collection
    <String> strlist = JSONArray.toCollection(JSONArray.fromObject(listStr));
    for (String str : strlist) {
        System.out.println(str);
    }

    String mapStr 
    = "{\"age\":30,\"name\":\"Michael\",\"baby\":[\"Lucy\",\"Lily\"]}";
    Map
    <String, Object> map = (Map) JSONObject.toBean(JSONObject
                    .fromObject(mapStr), Map.
    class);
    for (Entry<String, Object> entry : map.entrySet()) {
        System.out.println(entry.getKey() 
    + " " + entry.getValue());
    }

    打印結果:
                apple
               orange
               name Michael
               age 
    30
               baby [Lucy, Lily]

    posted on 2011-08-14 12:00 都市淘沙者 閱讀(11896) 評論(0)  編輯  收藏 所屬分類: Android/J2ME/Symbian/Jabber

    主站蜘蛛池模板: h视频免费高清在线观看| 久久精品国产亚洲av麻豆小说| 亚洲av无码无线在线观看| 免费日韩在线视频| 曰批全过程免费视频在线观看无码| 亚洲精品一卡2卡3卡三卡四卡| 国产精品二区三区免费播放心| 91精品全国免费观看青青| 亚洲国产亚洲综合在线尤物| 又黄又爽无遮挡免费视频| 无码人妻一区二区三区免费看| 亚洲人成自拍网站在线观看| 亚洲深深色噜噜狠狠爱网站| 亚洲人成电影网站免费| 成人免费一区二区三区| 国产精品高清视亚洲一区二区| 亚洲线精品一区二区三区 | 国产L精品国产亚洲区久久| 99re热精品视频国产免费| 国产亚洲午夜精品| 亚洲毛片免费观看| 亚洲一区二区三区偷拍女厕| 毛片基地免费观看| 四虎国产成人永久精品免费| 男女猛烈无遮掩视频免费软件| 亚洲一区二区三区国产精品无码| 国产亚洲欧洲Aⅴ综合一区| 巨胸喷奶水视频www网免费| 日韩免费的视频在线观看香蕉| 国产精品亚洲精品日韩动图| 久久亚洲日韩精品一区二区三区| 亚洲A∨精品一区二区三区| 国产免费看JIZZ视频| 免费国产叼嘿视频大全网站| 青青草97国产精品免费观看 | 亚洲国产理论片在线播放| 亚洲精品乱码久久久久久蜜桃不卡 | 亚洲系列中文字幕| 亚洲欧洲精品无码AV| 亚洲精品国产福利一二区| 日韩在线天堂免费观看|