免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
java與json互相轉(zhuǎn)換(解決日期問題)
JSON 即 JavaScript Object Natation,它是一種輕量級(jí)的數(shù)據(jù)交換格式,非常適合于服務(wù)器與 JavaScript 的交互。本文主要講解下java和JSON之間的轉(zhuǎn)換,特別是解決互相轉(zhuǎn)換遇到日期問題的情況。
    一、需要相關(guān)的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());

    打印結(jié)果: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());

    打印結(jié)果: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());

打印結(jié)果: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"}
   這時(shí)你會(huì)發(fā)現(xiàn)它把bean對(duì)象里的util.Date這個(gè)類型的所有屬性一一轉(zhuǎn)換出來。在實(shí)際運(yùn)用過程中,大多數(shù)情況下我們希望能轉(zhuǎn)化為yyyy
-MM-dd這種格式,下面就講一講如何實(shí)現(xiàn):
   首先要寫一個(gè)新的類JsonDateValueProcessor如下:

view plaincopy to clipboardprint
?
/**
* JSON 日期格式處理(java轉(zhuǎn)化為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;
    }

}

測(cè)試代碼:

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());

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

三、JSON
-》java
1.如何把json的yyyy-MM-dd的轉(zhuǎn)換為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)日期轉(zhuǎn)字符串這里不再寫代碼了
for (JsonBean o : list) {
   System.out.println(DateUtil.getFormatDate(o.getBorn(), 
"yyyy-MM-dd"));
}

打印結(jié)果:
           
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());
}

打印結(jié)果:
            apple
           orange
           name Michael
           age 
30
           baby [Lucy, Lily]
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
json前后臺(tái)傳值
JSON-lib框架,轉(zhuǎn)換JSON、XML不再困難
JsonUtil
Java構(gòu)造和解析Json數(shù)據(jù)的兩種方法詳解二
json lib 屬性過濾
用 annotation 輔助 Json-lib 轉(zhuǎn)換 JavaBean
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服