歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android之解析Json數據

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集。

在Android中被廣泛運用於客戶端和網絡(或者說服務器)通信。

JSON 表示名稱 / 值對的方式

按照最簡單的形式,可以用下面這樣的 JSON 表示"名稱 / 值對":

            { "name": "Brett", "lage":22,"sex": "女" } ,這表示了一個JsonObject。

            [{name:"張三:",age:21,sex:"女"},{name:"李斯",age:21,sex:"女"},{name:"王五",age:21,sex:"女"}],使用中括弧表示JsonArray,是json對象數組。

一、解析第一種單個json對象的json數據。數據從網絡上獲取。演示實例為 查詢手機號碼歸屬地。

  1. URL url;  
  2.         StringBuffer sb = new StringBuffer();  
  3.         String line = null;  
  4.         try {  
  5.             url = new URL(  
  6.             "http://api.showji.com/Locating/default.aspx?m=13763089126&output=json&callback=querycallback");  
  7.             HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
  8.             InputStream is = conn.getInputStream();  
  9.             BufferedReader buffer = new BufferedReader(  
  10.                     new InputStreamReader(is));  
  11.             while ((line = buffer.readLine()) != null) {  
  12.                 sb.append(line);  
  13.             }  
  14.   
  15.         } catch (MalformedURLException e) {  
  16.             e.printStackTrace();  
  17.         } catch (IOException e) {  
  18.             e.printStackTrace();  
  19.         }  

此處獲取的數據為:

querycallback({"Mobile":"13763******","QueryResult":"True","Province":"廣東","City":"湛江","AreaCode":"0759","PostCode":"524000","Corp":"中國移動","Card":"GSM"});

需要截取這個json對象出來。

String js = sb.substring(sb.indexOf("{"), sb.indexOf("}") + 1);

下面函數解析json對象,返回一個Callerloc對象

Callerloc是一個實體類

  1. private Callerloc parse(String json) {  
  2.         Callerloc my = null;  
  3.   
  4.         if (json == null || json.length() < 1)  
  5.             return null;  
  6.         try {  
  7.             my = new Callerloc();  
  8.             JSONObject jsonobj = new JSONObject(json);  
 
  1. my.setMobile(jsonobj.getString("Mobile"));  
  2. my.setQueryResult(jsonobj.getString("QueryResult"));  
  3. my.setProvince(jsonobj.getString("Province"));  
  4. my.setCity(jsonobj.getString("City"));  
  5. my.setAreaCode(jsonobj.getString("AreaCode"));  
  6. my.setPostCode(jsonobj.getString("PostCode"));  
  7. my.setCard(jsonobj.getString("Card"));  
  8. my.setCorp(jsonobj.getString("Corp"));  
 
  1.     } catch (JSONException e) {  
  2.         e.printStackTrace();  
  3.     }  
  4.     return my;  
  5. }  
Copyright © Linux教程網 All Rights Reserved