android開發(fā)中,與服務(wù)器交互80%是通過json方式傳輸數(shù)據(jù),JSON 也是基于純文本的數(shù)據(jù)格式,JSON具有跨平臺的優(yōu)勢,相對xml,json解析起來更方便,簡單,解析數(shù)據(jù)所消耗的流量也會比xml少,而且json有一些好的第三方庫文件,已為開發(fā)者封裝好了,
JSON語法規(guī)則:
JSON 數(shù)據(jù)的書寫格式是:名稱/值對
名稱/值對組合中的名稱寫在前面(在雙引號中),值對寫在后面(同樣在雙引號中),中間用冒號隔開:比如;"firstName":"John"
比如值是基本類型
{"city":"Beijing","street":"ChaoyangRoad","postcode":100025}{}代表是一個對象,這些都是簡單的key/html' target='_blank'>value形式,如果用對象來表示的話:
public class Info { public String city; public String street; public int postcode;}
在這個javabean中并沒有使用get,set方法,因?yàn)間et,set方法是使用反射做的,比較慢,這是json最簡單的方式,key/value形式,我們知道json有三種種方式,一種是key/value,key/Object,key/array,現(xiàn)在講講key/Object形式
比如:
{"name":"Michael","address":{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}} 這里有2個對象,一個是最外面的,一個是address:它也是一個對象,我們說了{(lán)}就代表一個對象,因此 首先寫里面的對象,然后再寫外面的對象,代碼如下:
Info.java
package com.example.josn;public class Info { public String city; public String street; public int postcode;}Person.java
/** * {"name":"Michael","address":{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}} * @author carpool * */public class Person { public String name; public Info info;}json解析代碼:
</pre><pre class="java" name="code">String jsonString = getJsonString(); try { JSONObject jb = new JSONObject(jsonString); Person p = new Person(); Info info = new Info(); info.city = jb.getJSONObject("address").getString("city"); info.street = jb.getJSONObject("address").getString("street"); info.postcode = jb.getJSONObject("address").getInt("postcode"); p.info = info; p.name = jb.getString("name"); } catch (JSONException e) { e.printStackTrace(); }
現(xiàn)在還剩下一個種形式j(luò)son,就是key/array,比如:
{ "people": [ { "firstName": "Brett", "lastName": "McLaughlin", "email": "aaaa" }, { "firstName": "Jason", "lastName": "Hunter", "email": "bbbb" }, { "firstName": "Elliotte", "lastName": "Harold", "email": "cccc" } ]}我們知道{}代表的是一個對象,[]代表的是數(shù)組,表示數(shù)組中存放了很多對象,對象之間用逗號(,)分開,
這個用對象封裝一般有二種形式,一是直接用集合把解析的對象存儲起來,二是用一個類封裝一個集合,集合的對象就是上面所解析的對象即可
第一種方式:
People.java
public class People { public String firstName; public String lastName; public String email;}
解析:
String jsonString = getJsonString();//json串 try { JSONObject jb = new JSONObject(jsonString); JSONArray ja = jb.getJSONArray("people"); ArrayList<People> ps = new ArrayList<People>(); for(int i=0;i<ja.length();i++){ People p = new People(); p.email = ja.getJSONObject(i).getString("email"); p.firstName = ja.getJSONObject(i).getString("firstName"); p.lastName = ja.getJSONObject(i).getString("lastName"); ps.add(p); } } catch (JSONException e) { e.printStackTrace(); }
第二種寫法:
public class Multiplepeople { public List<People> peoples;}String jsonString = getJsonString();//json串 try { JSONObject jb = new JSONObject(jsonString); JSONArray ja = jb.getJSONArray("people"); Multiplepeople multiplepeople = new Multiplepeople(); List<People> ps = new ArrayList<People>(); for(int i=0;i<ja.length();i++){ People p = new People(); p.email = ja.getJSONObject(i).getString("email"); p.firstName = ja.getJSONObject(i).getString("firstName"); p.lastName = ja.getJSONObject(i).getString("lastName"); ps.add(p); } multiplepeople.peoples =ps; } catch (JSONException e) { e.printStackTrace(); }json就到了,多練習(xí)就會了!代表的是key為address,值是個對象,
??
PHP編程鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選