<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

    主站蜘蛛池模板: 亚洲国产精品婷婷久久| 亚洲视频2020| 七色永久性tv网站免费看| 亚洲天堂男人天堂| 最近中文字幕无吗高清免费视频| 处破女第一次亚洲18分钟| 亚洲综合色成在线播放| 24小时日本韩国高清免费| 最新国产精品亚洲| 亚洲欧洲∨国产一区二区三区| 可以免费看黄视频的网站| kk4kk免费视频毛片| 亚洲成a人片在线观看中文app| 国产无遮挡色视频免费视频| 中文字幕无码免费久久| 亚洲AV无码专区亚洲AV伊甸园| a级片在线免费看| 亚洲偷偷自拍高清| 亚洲第一黄片大全| 亚洲免费视频网址| 亚洲欧美不卡高清在线| 久久久久国产亚洲AV麻豆 | 香蕉视频在线观看免费国产婷婷| 婷婷亚洲综合五月天小说在线| 婷婷综合缴情亚洲狠狠尤物| 久久青草91免费观看| 亚洲色成人四虎在线观看| 亚洲人成网7777777国产| 亚洲人成电影网站免费| 中文在线免费看视频| 久久亚洲最大成人网4438| 亚洲女人被黑人巨大进入| 亚洲免费在线视频观看| 免费看黄网站在线看| 亚洲国产日韩女人aaaaaa毛片在线| 国产小视频在线观看免费| 美女视频黄a视频全免费网站色窝 美女被cao网站免费看在线看 | 免费在线看v网址| 三年片免费观看大全国语| 亚洲色偷偷色噜噜狠狠99| 亚洲AV无码乱码在线观看裸奔|