Androidの解析Jsonデータ.

5370 ワード

JSON(JavaScript Object Notation)は、軽量級のデータ交換フォーマットです.それはJavaScript(Standard ECMA-232 rd Edition-December 1999)のサブセットに基づいています.
Androidでは、クライアントとネットワーク(またはサーバ)通信に広く使われている.
JSONは名称/値ペアを示す方式です.
一番簡単な形式で、以下のようなJSONで「名称/値ペア」を表してもいいです.
            {「name」:「Brett」、「lage」:22、「sex」:「女」}はJsonObjectを表しています.
            「{name:"张三:",age:21,sex:"女"」、{name:「李斯」,age:21,sex:"女"、{name:"王五",age:21,sex:"女"}」は、Jsonarayを括弧で表し、jsonオブジェクト配列です.
       一つ目の単一のjsonオブジェクトのjsonデータを解析します.データはインターネットから取得します.デモの例は、携帯電話番号のホームを照会することである.
      
[java]view play copy print?
URL url  
  •         StringBuffer sb = new StringBuffer()  
  •         String ライン = null  
  •         try {  
  •             url = new URL(  
  •             「http://api.showji.com/Locating/default.aspx?m=13763089126&output=json&callback=querycallback");  
  •             HttpURLConnection コンサート = (HttpURLConnection) url.openConnection();  
  •             InputStream is = conn.getInputStream()  
  •             BufferedReader ブザー = new BufferedReader  
  •                     new InputStream Reader(is);  
  •             while (ライン = buffer.readline() != null {  
  •                 sb.apped  
  •             }  
  •   
  •         } catch (Mal formedURLException e) {  
  •             e.print StockTrace();  
  •         } catch (IOException e) {  
  •             e.print StockTrace();  
  •         }  
    URL url;
    		StringBuffer sb = new StringBuffer();
    		String line = null;
    		try {
    			url = new URL(
    			"http://api.showji.com/Locating/default.aspx?m=13763089126&output=json&callback=querycallback");
    			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    			InputStream is = conn.getInputStream();
    			BufferedReader buffer = new BufferedReader(
    					new InputStreamReader(is));
    			while ((line = buffer.readLine()) != null) {
    				sb.append(line);
    			}
    
    		} catch (MalformedURLException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    ここで取得したデータは以下の通りです.
    querycalback(\"Mobile":"1373***","QueryResult"):「True」,「Province」:「広東」,「City」:「湛江」,「AreCode」:「0759」,「PostCode」:「524000」,「Corp」:「中国移動」,「Card」
    このJsonの対象を切り取りたいです.
    String js=sb.substring(s b.indexOf(')、sb.indexOf(')+1)
     
    以下の関数はjsonオブジェクトを解析して、Callerrlocオブジェクトを返します.
    Callrlocは実体類です.
    [html]view pline copy print?
    prvate Callrloc parse(String) Json {  
  •         Callrloc my = null  
  •   
  •         if (Json) == null || Json.length() < 1)  
  •             return null  
  •         try {  
  •             my = new Callrloc()  
  •             JSONObject jsonbj = new JSONObject(json);  
  • private Callerloc parse(String json) {
    		Callerloc my = null;
    
    		if (json == null || json.length() < 1)
    			return null;
    		try {
    			my = new Callerloc();
    			JSONObject jsonobj = new JSONObject(json);
    [html]view pline copy print?
    my.set Mobile(jsonbj.get String);  
  • my.setQueryResult(jsonbj.get String);  
  • my.set Province(jsobj.get String);  
  • my.set City(jsonbj.get String);  
  • my.set Area Code(jsonbj.get String);  
  • my.set PostCode(jsonbj.get String);  
  • my.setCard(jsonbj.get String);  
  • my.set Corp(jsonbj.get String);  
  • 			my.setMobile(jsonobj.getString("Mobile"));
    			my.setQueryResult(jsonobj.getString("QueryResult"));
    			my.setProvince(jsonobj.getString("Province"));
    			my.setCity(jsonobj.getString("City"));
    			my.setAreaCode(jsonobj.getString("AreaCode"));
    			my.setPostCode(jsonobj.getString("PostCode"));
    			my.setCard(jsonobj.getString("Card"));
    			my.setCorp(jsonobj.getString("Corp"));
    			
    [html]view pline copy print?
        } catch (JSONException e) {  
  •         e.print StockTrace();  
  •     }  
  •     return my;  
  • )  
    		} catch (JSONException e) {
    			e.printStackTrace();
    		}
    		return my;
    	}
           二、解析Json配列
                jsonデータは「{name:「張三:」,age:21,sex:「女」、{name:「李斯」,age:21,sex:「女」},{name:「王五」,age:21,sex:「女」}」である.
               リストを返します
    [java]view play copy print?
    prvate ArayList<myjson> parsem(String) Json {  
  •         myjson my = null  
  •   
  •         if (Json) == null || Json.length() < 1)  
  •             return null  
  •         try {  
  •             JSONArray Jsonary = new JSONArray(json);  
  •             ArayList<myjson> OBリスト = new ArayList<myjson>()  
  •             for (int i = 0; i < jsonary.length() i++) {  
  •                 my = new myjson();  
  •                 JSONObject jsonbj = JSONObject(i)  
  •                 my.set_name(jsonbj.get String);  
  •                 my.setuage(jsonbj.get Int);  
  •                 my.set usex(jsobj.get String);  
  •                 objlist.add(my)  
  •             }  
  •             return OBリスト  
  •         } catch (JSONException e) {  
  •             e.print StockTrace();  
  •         }  
  •         return null  
  •     }