国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

深入淺析Android JSON解析

2020-04-11 11:08:59
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

JSON語(yǔ)法

首先看JSON的語(yǔ)法和結(jié)構(gòu),這樣我們才知道怎么去解析它。JSON語(yǔ)法時(shí)JavaScript對(duì)象表示語(yǔ)法的子集。

JSON的值可以是:

數(shù)字(整數(shù)或者浮點(diǎn)數(shù))

字符串(在雙引號(hào)內(nèi))

邏輯值(true 或 false)

數(shù)組(使用方括號(hào)[]包圍)

對(duì)象( 使用花括號(hào){}包圍)

null

JSON中有且只有兩種結(jié)構(gòu):對(duì)象和數(shù)組。

1、對(duì)象:對(duì)象在js中表示為“{}”括起來(lái)的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 {key:value,key:value,…}的鍵值對(duì)的結(jié)構(gòu),在面向?qū)ο蟮恼Z(yǔ)言中,key為對(duì)象的屬性,value為對(duì)應(yīng)的屬性值,所以很容易理解,取值方法為 對(duì)象.key 獲取屬性值,這個(gè)屬性值的類型可以是 數(shù)字、字符串、數(shù)組、對(duì)象幾種。

2、數(shù)組:數(shù)組在js中是中括號(hào)“[]”括起來(lái)的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 [“java”,“javascript”,“vb”,…],取值方式和所有語(yǔ)言中一樣,使用索引獲取,字段值的類型可以是 數(shù)字、字符串、數(shù)組、對(duì)象幾種。

做個(gè)Android網(wǎng)絡(luò)編程的同學(xué)一定對(duì)于JSON解析一點(diǎn)都不陌生,因?yàn)楝F(xiàn)在我們通過手機(jī)向服務(wù)器請(qǐng)求資源,服務(wù)器給我們返回的數(shù)據(jù)資源一般都是以JSON格式返回,當(dāng)然還有一些通過XML格式返回,相對(duì)JSON格式,XML格式的數(shù)據(jù)在處理時(shí)相對(duì)比較繁瑣,并且Android為我們提供了兩個(gè)解析JSON對(duì)象的類:JSONObject與JSONArray這兩個(gè)對(duì)象可以很好的滿足我們的需求,JSONArray對(duì)象可以以數(shù)組的形式將數(shù)據(jù)返回到手機(jī),JSONObject對(duì)象則可以以對(duì)象的形式將數(shù)據(jù)為我們封裝好返回,手機(jī)接收都這兩種數(shù)據(jù)后,通過解析,可以很方便的使用,大大的方便了我們的開發(fā)學(xué)習(xí)。

  當(dāng)然在使用JSONObject進(jìn)行數(shù)據(jù)解析時(shí),有兩種方式,一種通過鍵值對(duì)的形式一個(gè)一個(gè)的取數(shù)據(jù);另一種就是將JSONObject解析為具體的對(duì)象,然后通過對(duì)象的get、set方法進(jìn)行數(shù)據(jù)的讀取與操作,對(duì)于第一種方式,相信剛接觸JSON解析的小童鞋都是這樣干的,相對(duì)第一種方式,第二種方式更加的簡(jiǎn)單方便,下面我們就一起學(xué)習(xí)一下如何實(shí)現(xiàn)將JSONObject對(duì)象轉(zhuǎn)化為具體的對(duì)象吧。

  因?yàn)榻裉煳覀円接懙氖顷P(guān)于JSONObject的解析,所以我就通過一個(gè)簡(jiǎn)單的對(duì)象創(chuàng)建--對(duì)象封裝--對(duì)象解析--對(duì)象操作,為大家介紹一下如何進(jìn)行JSONObject向具體對(duì)象的轉(zhuǎn)化。

  首先我們的對(duì)象類(user):

public class User {  private String id;  private String name;  private String from;  public String getId() {    return id;  }  public void setId(String id) {    this.id = id;  }  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }  public String getFrom() {    return from;  }  public void setFrom(String from) {    this.from = from;  }  @Override  public String toString() {    return "User [id=" + id + ",name=" + name + ",from=" + from +"]";  }}

  這里我重寫了對(duì)象的toString方法,這里一定要注意返回參數(shù)的格式:類名+'['+參數(shù)名+'='+參數(shù)+.....+']'

  下面就是我們的對(duì)象創(chuàng)建與解析了:

  1、JSONObject對(duì)象解析類:

//JSONObject解析類public class JsonParseToObject {  public Object AllJsonParseToObject(String json, String packageAddress) {    Object parseObject = null;    try {      parseObject = JSON.parseObject(json, Class.forName(packageAddress));    } catch (ClassNotFoundException e) {      e.printStackTrace();    }    return parseObject;  }  } 

  2、JSON對(duì)象的創(chuàng)建與解析:

public class MainActivity extends Activity {  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    TextView text = (TextView) findViewById(R.id.hw);    //將我們的對(duì)象屬性封裝都JSONObject中    JSONObject jo = new JSONObject();    jo.put("id", "16");    jo.put("name", "小了");    jo.put("from", "河南");    String str = jo.toString();    Toast.makeText(this, str, Toast.LENGTH_LONG).show();    //對(duì)JSONObject對(duì)象進(jìn)行解析    User u = (User) new JsonParseToObject().AllJsonParseToObject(jo.toString(), "com.example.jsontoobject.User");    //判斷JSONObject對(duì)象解析是否正確    if(u != null){      text.setText(jo.toString()+"/nid:"+u.getId()+";name:"+u.getName()+";from:"+u.getFrom());//進(jìn)行對(duì)象操作    }else{      text.setText("User == null");    }  }}

  布局文件很簡(jiǎn)單就是一個(gè)文本框,用來(lái)顯示解析后的數(shù)據(jù)。

  好了到這里我們關(guān)于JSONObject解析的知識(shí)就為大家介紹完畢,沒用過這種方式的小伙伴可以嘗試一下,還是挺方便的,如果你有更好的方式,還望交流學(xué)習(xí)。

以上內(nèi)容是小編給大家分享的Android JSON解析的全部敘述,希望可以幫助大家。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 克东县| 平江县| 虎林市| 苏尼特右旗| 伊吾县| 惠水县| 南平市| 高雄市| 沭阳县| 临武县| 巍山| 六安市| 灵宝市| 林周县| 竹北市| 林芝县| 新乡县| 怀来县| 子洲县| 遂平县| 河北区| 泸定县| 湖口县| 长宁县| 金乡县| 武宣县| 永清县| 乐安县| 成都市| 星座| 金山区| 泸水县| 华阴市| 陕西省| 新河县| 富民县| 郑州市| 曲沃县| 广东省| 乌审旗| 治县。|