<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 都市淘沙者 閱讀(11897) 評論(0)  編輯  收藏 所屬分類: Android/J2ME/Symbian/Jabber

    主站蜘蛛池模板: 95老司机免费福利| 中日韩亚洲人成无码网站| 黄色一级毛片免费看| 免费看的黄色大片| 亚洲人成网站色7799| 最新中文字幕免费视频| 亚洲精品美女网站| 性感美女视频免费网站午夜| 色天使亚洲综合在线观看| 成熟女人特级毛片www免费| 亚洲欧美成人av在线观看| 国产精品成人四虎免费视频| 香蕉视频免费在线| 中文字幕亚洲日韩无线码| 国产麻豆成人传媒免费观看| 亚洲国产精品lv| 一二三四影视在线看片免费| 亚洲日本VA午夜在线影院| 免费少妇a级毛片| fc2免费人成在线视频| 亚洲av丰满熟妇在线播放| 日本免费xxxx| 亚洲av成人一区二区三区观看在线| 免费国产a国产片高清| 精品国产一区二区三区免费| 亚洲精品美女久久久久9999| 女人与禽交视频免费看| xxxx日本在线播放免费不卡| 亚洲人成依人成综合网| 成人啪精品视频免费网站| 特a级免费高清黄色片| 中文字幕亚洲第一在线| 日产乱码一卡二卡三免费| 91在线免费视频| 亚洲AV无码专区在线亚| 亚洲国产精品成人久久蜜臀| 免费无遮挡无码永久视频| 亚洲精品色在线网站| 亚洲欧洲国产日韩精品| 国产免费一区二区三区VR| 久久久久久AV无码免费网站下载|