亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JSONObject基本內容(三)

2019-11-15 00:47:51
字體:
來源:轉載
供稿:網友
JSONObject基本內容(三)

參考資料:http://swiftlet.net/archives/category/json 十分感謝!?。~

第三篇的內容,主要講述的有兩點: 1 .如何獲取JSONObject中對應key的value。 2.如何把JSONObject轉換為javaBean對象。

一)獲取JSONObject中屬性值

首先我們寫一個javaBean類

public class Emp {    PRivate String name;    private Integer age;    private boolean married;        public boolean isMarried() {        return married;    }    public void setMarried(boolean married) {        this.married = married;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }}

然后按正常方法,生成對象,把它轉換為JSONObject,接著看注釋吧~

    public static void main(String[] args) {        Emp emp = new Emp();        emp.setName("Rime");        emp.setAge(23);        emp.setMarried(false);                //轉換為JSONObject        JSONObject json = JSONObject.fromObject(emp);        System.out.println(json.toString());                //利用key獲取屬性值,和map相似        String name = json.getString("name");        Integer age = json.getInt("age");        boolean married = json.getBoolean("married");        System.out.println(name + "," + age + "," + married);            }

輸出結果:

{"age":23,"married":false,"name":"Rime"}Rime,23,false

看到這里你或許會有疑問,(1)假如JSONObject中并沒有這個key存在,會怎么樣?(2)這個key對應的value的類型錯了,怎么辦?(3)如果value是復雜數據類型,怎么辦?

既然有疑問,那么我們一個一個解決。

(1)我們故意把"name"寫錯,寫成"nane",結果系統報錯:

Exception in thread "main" net.sf.json.JSONException: JSONObject["nane"] not found

為了防止這種異常,我們可以用optXXX方法,來代替getXXX方法。

即:

 String name = json.optString("nane");//當jsonObject中不存在該key時,可以用optXXX來獲取空值或者默認值,而不是報異常

設置默認值:

String name = json.optString("nane","notExits");

設置默認之后,當nane屬性不存在時,返回notExits字符串。

(2)我們把程序修改一下

        String name = json.getString("age");        boolean married = json.getBoolean("name");        Integer age = json.getInt("name");

運行程序,會報錯:

Exception in thread "main" net.sf.json.JSONException: JSONObject["name"] is not a Boolean.

Exception in thread "main" net.sf.json.JSONException: JSONObject["name"] is not a number.這一類錯誤。

特別要注意的是{"age":23,"married":false,"name":"false"},其中沒帶""號的false是boolean類型,帶引號的是字符串類型。

還有就是大多數類型可以轉換為字符串類型,但是反過來就不行了。

(3)復雜數據類型

寫一個復雜點的bean

public class Student implements Serializable{    private static final long serialVersionUID = 1L;    private String sname;    private Integer age;    private Date birth;    private List<String> courses;    private Map<String,String> photo;    private Emp emp;

然后,生成對象,給屬性賦值

    public static void main(String[] args) {        Student s = new Student();        List<String> sList = new LinkedList<String>();        Map<String,String> photos = new HashMap<String,String>();        Emp emp = new Emp();        emp.setName("me");        emp.setAge(10);        emp.setMarried(false);                sList.add("a");        sList.add("b");                photos.put("c", "c");        photos.put("d", "d");                s.setSname("EZ");        s.setAge(23);        s.setBirth(new Date());        s.setCourses(sList);        s.setPhoto(photos);        s.setEmp(emp);                JSONObject jsonObject = JSONObject.fromObject(s);        System.out.println(jsonObject.toString());                //jsonObject轉換為javaBean                Student student = (Student) JSONObject.toBean(jsonObject, Student.class);        System.out.println(student.getSname() + ";" + student.getAge() + ";" +student.getBirth() + ";" + student.getCourses().get(1) + ";" + student.getPhoto().get("c") + ";" + student.getEmp());    }

運行結果:

{"age":23,"birth":{"date":7,"day":2,"hours":17,"minutes":24,"month":6,"seconds":33,"time":1436261073641,"timezoneOffset":-480,"year":115},"courses":["a","b"],"emp":{"age":10,"married":false,"name":"me"},"photo":{"d":"d","c":"c"},"sname":"EZ"}2015-7-7 17:24:33 net.sf.json.JSONObject toBean信息: Property 'day' of class java.util.Date has no write method. SKipPED.2015-7-7 17:24:33 net.sf.json.JSONObject toBean信息: Property 'timezoneOffset' of class java.util.Date has no write method. SKIPPED.EZ;23;Tue Jul 07 17:24:33 CST 2015;b;c;com.vmaxtam.json.Emp@43b09468

雖然順利把數據轉換回去了,但是出現了警告信息,總讓人無法安心下來。

如果仔細觀察,可以發現,以上警告都是有關java.util.Date 的警告,那么Date類型該如何處理呢?

并且,留意 "birth":{"date":8,"day":3,"hours":11,"minutes":11,"month":6,"seconds":31,"time":1436325091564,"timezoneOffset":-480,"year":115},

你會發現這個格式的數據十分難懂,而且我們一般只要用到yyyy-MM-dd這種格式。

二)Date類型

關于Date類型的轉換,我們可以通過轉換器來實現。

先寫一個轉換器:

public class JsonDateValueProcessor implements JsonValueProcessor {    private String datePattern = "yyyy-MM-dd";    public JsonDateValueProcessor() {        super();    }    public JsonDateValueProcessor(String format) {        super();        this.datePattern = format;    }    @Override    public Object processArrayValue(Object value, JsonConfig jsonConfig) {        return process(value);    }    @Override    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,                        Locale.UK);                return sdf.format((Date) value);            }            return value == null ? "" : value.toString();        } catch (Exception e) {            return "";        }    }    public String getDatePattern() {        return datePattern;    }    public void setDatePattern(String pDatePattern) {        datePattern = pDatePattern;    }}

然后再進行測試:

    public static void main(String[] args) {        Student s = new Student();        s.setBirth(new Date());                JsonConfig config = new JsonConfig();        config.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());                        JSONObject jsonObject = JSONObject.fromObject(s,config);        System.out.println(jsonObject.toString());    }

最后輸出的結果

{"age":0,"birth":"2015-07-08","courses":[],"emp":null,"photo":null,"sname":""}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
上原亚衣av一区二区三区| 欧美电影免费观看网站| 久久久影视精品| 97视频在线观看网址| 亚洲精品大尺度| 按摩亚洲人久久| 欧美精品日韩三级| 亚洲电影免费观看高清完整版在线观看| 欧美夫妻性生活视频| 午夜精品www| 国产精品丝袜久久久久久不卡| 久久成人一区二区| 国产精品av在线播放| 精品久久久久久久中文字幕| 中文字幕免费精品一区| 久久综合色88| 亚洲美女黄色片| 日韩激情视频在线| 夜夜嗨av色综合久久久综合网| 久久久久久久久久婷婷| 欧美国产欧美亚洲国产日韩mv天天看完整| 深夜福利日韩在线看| 国产一区在线播放| 国产美女久久精品香蕉69| 亚洲欧美日韩图片| 91福利视频网| 国产精品自产拍在线观看| 亚洲老头同性xxxxx| 久久99久久亚洲国产| 国产精品96久久久久久又黄又硬| 久久福利视频导航| 国产精品精品国产| 国产精品美女久久久久av超清| 亚洲国产女人aaa毛片在线| 亚洲国产精品系列| 亚洲欧美激情另类校园| 亚洲国产成人在线播放| 欧美激情第99页| 91九色蝌蚪国产| 亚洲综合社区网| 成人精品网站在线观看| 精品亚洲精品福利线在观看| 日韩av成人在线观看| 久久国产精品视频| 91中文在线观看| 久久久久久久一区二区| 成人黄色在线播放| 91久久精品美女高潮| 成人看片人aa| 91精品国产色综合久久不卡98| 欧美中文在线观看| 亚洲国产私拍精品国模在线观看| 欧美日韩亚洲一区二| 日韩精品免费在线视频观看| 国产成人一区二区在线| 国产精品普通话| 国产成人鲁鲁免费视频a| www.亚洲成人| 久久影院中文字幕| 国产美女精品视频| 亚洲一区制服诱惑| 久久91精品国产91久久久| 色午夜这里只有精品| 亚洲人成网7777777国产| 久久影院模特热| 久久中文久久字幕| 丝袜一区二区三区| 亚洲女人天堂av| 最新国产精品拍自在线播放| 亚洲第一二三四五区| 2019中文字幕全在线观看| 欧美精品一二区| 午夜精品久久久久久久男人的天堂| 8x海外华人永久免费日韩内陆视频| 亚洲第一网站免费视频| 亚洲视频电影图片偷拍一区| 日韩中文字幕欧美| 日韩中文第一页| 午夜精品美女自拍福到在线| 欧美成人黄色小视频| 91a在线视频| 中文字幕日本精品| 日韩精品视频免费在线观看| 久久久久中文字幕2018| 精品性高朝久久久久久久| 亚洲japanese制服美女| 精品国产999| 久久亚洲春色中文字幕| 国产精品∨欧美精品v日韩精品| 777777777亚洲妇女| 丝袜亚洲欧美日韩综合| 欧美成人免费在线观看| 日本精品视频网站| 日本久久久久久久| 国产一区二区三区免费视频| 国产精品久久久久久超碰| 粗暴蹂躏中文一区二区三区| 久久久电影免费观看完整版| 日韩高清免费观看| 国产91精品久久久久久| 亚洲国产精品一区二区三区| 欧美另类交人妖| 欧美激情喷水视频| 国产精品都在这里| 欧美野外猛男的大粗鳮| 91精品国产91久久久久久吃药| 91精品国产亚洲| 精品成人av一区| 国产97在线|亚洲| 成人免费直播live| 亚洲男女性事视频| 国产精品电影在线观看| 久久久免费精品视频| 久久精品人人做人人爽| 色老头一区二区三区在线观看| 色播久久人人爽人人爽人人片视av| 久久精品视频在线播放| 在线观看欧美www| 亚洲色在线视频| 欧美综合激情网| 韩国国内大量揄拍精品视频| 亚州精品天堂中文字幕| 日韩欧美视频一区二区三区| 国产日本欧美一区二区三区在线| 国产精品欧美一区二区三区奶水| 91九色单男在线观看| 欧美综合在线第二页| 久久国产精品电影| 欧美性做爰毛片| 色综合久久精品亚洲国产| 成人疯狂猛交xxx| 911国产网站尤物在线观看| 精品福利在线看| 91人人爽人人爽人人精88v| 日韩免费在线免费观看| 91精品国产成人| 97视频在线观看网址| 亚洲高清不卡av| 欧美视频国产精品| 久久99久久99精品中文字幕| 97精品免费视频| 国产精品精品视频| 羞羞色国产精品| 亚洲香蕉在线观看| 欧美成人免费在线视频| 久久久精品国产一区二区| 亚洲男人的天堂在线| 热久久这里只有精品| www.欧美精品| 激情久久av一区av二区av三区| 国外日韩电影在线观看| 亚洲成色777777女色窝| 一区二区三区在线播放欧美| 中文字幕日韩精品在线观看| wwwwwwww亚洲| 亚洲免费av网址| 日韩电影免费在线观看| 日韩免费电影在线观看| 日韩精品免费电影| 91精品综合视频| 久久精品国产96久久久香蕉| 日韩国产精品视频| 国产成人涩涩涩视频在线观看| 性夜试看影院91社区|