Android下Json數據解析

jopen 8年前發布 | 8K 次閱讀 Android開發 移動開發

如從網絡獲取JSON 則需要創建一個工具類,該類返回一個字符串為JSON文本

package com.example.jsonapp;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;



public class UrlHtmlUtil {
     public static String getHtmlJsonByUrl(String urlTemp){
        URL url = null;
        InputStreamReader input = null; 
        HttpURLConnection conn;
      //  JSONObject jsonObj = null;
        String a = null;
        try {
           url = new URL(urlTemp);
           conn = (HttpURLConnection) url.openConnection();
           input = new InputStreamReader(conn.getInputStream(),"utf-8");
           Scanner inputStream = new Scanner(input);   
           StringBuffer sb = new StringBuffer();
           while (inputStream.hasNext()) {    
                 sb.append(inputStream.nextLine());
           }
            a=sb.toString();

       } catch (Exception e) {  
            System.out.println(e.getMessage());
      }

         return a;

 }


}
然后將文本轉為JSONArray,用JSONArray.optJSONObject()來獲取JSONObject 對象,接下來便可解析

JSONArray array=new JSONArray(json);
                        Log.i("轉換數組成功","");
                        for(int i=0;i<array.length();i++)
                        {
                             JSONObject jo = array.optJSONObject(i);
                            if(jo.getString("area").equals(cityName))
                            {
                                tv.setText("AQI指數:"+jo.getString("aqi")+"\n地區:"+jo.getString("area")
                                        +"\n空氣質量:"+jo.getString("quality"));

                            break;}
                            if(i==array.length()-1){
                            tv.setText("抱歉,也并沒有找到該城市");
                            }
                        }


public void enJson(String json){

        try {
            JSONTokener jsonParser=new JSONTokener(json);
            JSONObject aqi=(JSONObject)jsonParser.nextValue();
            String aqistr,areastr,quastr,lvstr,timestr;
            aqistr=aqi.getString("aqi");
            areastr=aqi.getString("area");
            quastr=aqi.getString("quality");
            lvstr=levelToLevel(aqi.getString("level"));
            timestr=timeToTime(aqi.getString("time"));

            tv.setText("地區:"+areastr+"\nAQI:"+aqistr+"\n空氣質量:"+quastr+"\n小貼士:"+lvstr+"\n更新時間:"+timestr+"\n點我刷新數據");

        }


來自: http://blog.csdn.net/wingichoy/article/details/44538363

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!