九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

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

開(kāi)通VIP
JSON數(shù)據(jù)解析

什么是JSON:

JSON即JavaScript Object Natation, 它是一種輕量級(jí)的數(shù)據(jù)交換格式, 與XML一樣, 是廣泛被采用的客戶端和服務(wù)端交互的解決方案.

JSON對(duì)象: JSON中對(duì)象(Object)以"{"開(kāi)始, 以"}"結(jié)束. 對(duì)象中的每一個(gè)item都是一個(gè)key-value對(duì), 表現(xiàn)為"key:value"的形式, key-value對(duì)之間使用逗號(hào)分隔. 如:{"name":"coolxing", "age"=24, "male":true, "address":{"street":"huiLongGuan", "city":"beijing", "country":"china"}}. JSON對(duì)象的key只能是string類型的, 而value可以是string, number, false, true, null, Object對(duì)象甚至是array數(shù)組, 也就是說(shuō)可以存在嵌套的情況.

JSON數(shù)組: JSON數(shù)組(array)以"["開(kāi)始, 以"]"結(jié)束, 數(shù)組中的每一個(gè)元素可以是string, number, false, true, null, Object對(duì)象甚至是array數(shù)組, 數(shù)組間的元素使用逗號(hào)分隔. 如["coolxing", 24, {"street":"huiLongGuan", "city":"beijing", "country":"china"}].

 

JSON數(shù)據(jù)的解析:解析JSON數(shù)據(jù), 首先需要明確待解析的是JSON Object還是JSON array, 然后需要確定采用哪種解析技術(shù). android平臺(tái)上一般有2種解析技術(shù)可供選擇: android內(nèi)置的org.json包和google的開(kāi)源gson庫(kù). 以下將分別采用這兩種技術(shù)解析JSON對(duì)象和JSON數(shù)組.

1.  采用android內(nèi)置的org.json包解析JSON對(duì)象. 假設(shè)待解析的JSON數(shù)據(jù)為json = "{\"name\":\"coolxing\", \"age\"=24, \"male\":true, \"address\":{\"street\":\"huiLongGuan\", \"city\":\"beijing\", \"country\":\"china\"}}", 其中\(zhòng)用于轉(zhuǎn)義表達(dá)式中的雙引號(hào). 首先定義2個(gè)JavaBean:

 

Java代碼  
  1. public class Address {  
  2.     private String street;  
  3.     private String city;  
  4.     private String country;  
  5.   
  6.     public Address() {  
  7.         super();  
  8.     }  
  9.   
  10.     public Address(String street, String city, String country) {  
  11.         super();  
  12.         this.street = street;  
  13.         this.city = city;  
  14.         this.country = country;  
  15.     }  
  16.   
  17.     public String getStreet() {  
  18.         return street;  
  19.     }  
  20.   
  21.     public void setStreet(String street) {  
  22.         this.street = street;  
  23.     }  
  24.   
  25.     public String getCity() {  
  26.         return city;  
  27.     }  
  28.   
  29.     public void setCity(String city) {  
  30.         this.city = city;  
  31.     }  
  32.   
  33.     public String getCountry() {  
  34.         return country;  
  35.     }  
  36.   
  37.     public void setCountry(String country) {  
  38.         this.country = country;  
  39.     }  
  40.   
  41.     @Override  
  42.     public String toString() {  
  43.         return "Address [street=" + street + ", city=" + city + ", country="  
  44.                 + country + "]";  
  45.     }  
  46.   
  47. }  
 

 

Java代碼  
  1. public class Person {  
  2.     private String name;  
  3.     private int age;  
  4.     private boolean male;  
  5.     private Address address;  
  6.   
  7.     public Person() {  
  8.         super();  
  9.     }  
  10.   
  11.     public Person(String name, int age, boolean male, Address address) {  
  12.         super();  
  13.         this.name = name;  
  14.         this.age = age;  
  15.         this.male = male;  
  16.         this.address = address;  
  17.     }  
  18.   
  19.     public String getName() {  
  20.         return name;  
  21.     }  
  22.   
  23.     public void setName(String name) {  
  24.         this.name = name;  
  25.     }  
  26.   
  27.     public int getAge() {  
  28.         return age;  
  29.     }  
  30.   
  31.     public void setAge(int age) {  
  32.         this.age = age;  
  33.     }  
  34.   
  35.     public boolean isMale() {  
  36.         return male;  
  37.     }  
  38.   
  39.     public void setMale(boolean male) {  
  40.         this.male = male;  
  41.     }  
  42.   
  43.     public Address getAddress() {  
  44.         return address;  
  45.     }  
  46.   
  47.     public void setAddress(Address address) {  
  48.         this.address = address;  
  49.     }  
  50.   
  51.     @Override  
  52.     public String toString() {  
  53.         return "Person [name=" + name + ", age=" + age + ", male=" + male  
  54.                 + ", address=" + address + "]";  
  55.     }  
  56.   
  57. }  

下面是具體的解析代碼:

 

Java代碼  
  1. JSONObject jsonObject = new JSONObject(json);  
  2. String name = jsonObject.getString("name");  
  3. int age = jsonObject.getInt("age");  
  4. boolean male = jsonObject.getBoolean("male");  
  5. JSONObject addressJSON = jsonObject.getJSONObject("address");  
  6. String street = addressJSON.getString("street");  
  7. String city = addressJSON.getString("city");  
  8. String country = addressJSON.getString("country");  
  9. Address address = new Address(street, city, country);  
  10. Person person = new Person(name, age, male, address);  
  11. System.out.println(person);  

LogCat的輸出為Person [name=coolxing, age=24, male=true, address=Address [street=huiLongGuan, city=beijing, country=china]], 說(shuō)明已經(jīng)正確解析了JSON對(duì)象.

 

2. 采用gson庫(kù)解析JSON對(duì)象. 假設(shè)帶解析的JSON數(shù)據(jù)是json = "{\"name\":\"coolxing\", \"age\"=24, \"male\":true, \"address\":{\"street\":\"huiLongGuan\", \"city\":\"beijing\", \"country\":\"china\"}}", 首先需要到http://code.google.com/p/google-gson/下載jar包, 并將其添加到項(xiàng)目中. 具體的解析代碼如下:

 

Java代碼  
  1. Gson gson = new Gson();  
  2. Person person = gson.fromJson(json, Person.class);  
  3. System.out.println(person);  

LogCat的輸出為Person [name=coolxing, age=24, male=true, address=Address [street=huiLongGuan, city=beijing, country=china]], 說(shuō)明已經(jīng)正確解析了JSON對(duì)象, 是不是很簡(jiǎn)單?

 

3. 采用android內(nèi)置的org.json包解析JSON數(shù)組. 假設(shè)待解析的JSON數(shù)據(jù)為json = "[{\"name\":\"coolxing\", \"age\"=24, \"male\":true, \"address\":{\"street\":\"huiLongGuan\", \"city\":\"beijing\", \"country\":\"china\"}}, {\"name\":\"min\", \"age\"=20, \"male\":false, \"address\":{\"street\":\"heiShiJiao\", \"city\":\"daLian\", \"country\":\"china\"}}]", 解析代碼如下:

 

Java代碼  
  1. List<Person> persons = new ArrayList<Person>();  
  2. JSONArray jsonArray = new JSONArray(json);  
  3. for(int i = 0; i < jsonArray.length(); i++) {  
  4.     JSONObject jsonObject = jsonArray.getJSONObject(i);  
  5.     String name = jsonObject.getString("name");  
  6.     int age = jsonObject.getInt("age");  
  7.     boolean male = jsonObject.getBoolean("male");  
  8.     JSONObject addressJSON = jsonObject.getJSONObject("address");  
  9.     String street = addressJSON.getString("street");  
  10.     String city = addressJSON.getString("city");  
  11.     String country = addressJSON.getString("country");  
  12.     Address address = new Address(street, city, country);  
  13.     Person person = new Person(name, age, male, address);  
  14.     persons.add(person);  
  15. }  
  16. System.out.println(persons);  

LogCat的輸出為[Person [name=coolxing, age=24, male=true, address=Address [street=huiLongGuan, city=beijing, country=china]], Person [name=min, age=20, male=false, address=Address [street=heiShiJiao, city=daLian, country=china]]], 說(shuō)明已經(jīng)正確解析了JSON數(shù)組.


4. 采用gson庫(kù)解析JSON數(shù)組. 待解析的JSON數(shù)據(jù)同上, 具體代碼為:

 

Java代碼  
  1. Gson gson = new Gson();  
  2. Type listType = new TypeToken<List<Person>>(){}.getType();  
  3. List<Person> persons = gson.fromJson(json, listType);  
LogCat的輸出為[Person [name=coolxing, age=24, male=true, address=Address [street=huiLongGuan, city=beijing, country=china]], Person [name=min, age=20, male=false, address=Address [street=heiShiJiao, city=daLian, country=china]]], 說(shuō)明已經(jīng)正確解析了JSON數(shù)組.
new TypeToken<List<Person>>(){}.getType(); 這句代碼表示創(chuàng)建一個(gè)TypeToken的匿名子類對(duì)象, 并調(diào)用對(duì)象的getType()方法.

org.json包和gson庫(kù)還有很多其他有用的API, 需要的時(shí)候可查看文檔. 比如有的時(shí)候需要通過(guò)java對(duì)象或java集合和數(shù)組生成json數(shù)據(jù)上傳給服務(wù)器, 當(dāng)然你可以自我構(gòu)造json字符串, 但會(huì)很麻煩. 這個(gè)時(shí)候就可以使用其中的有關(guān)API, 方便的完成這項(xiàng)工作.
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Android中JSON解析
Java下json的解析方法
Gson 解析教程
[轉(zhuǎn)]用GSON 五招之內(nèi)搞定任何JSON數(shù)組
java創(chuàng)建json數(shù)據(jù),構(gòu)建json數(shù)據(jù)
json從立地到成佛
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服