安卓開發之JSON數據的提取另附上需要的jar包

由於在安卓裏面對網絡的交互不能放在主線程裏面:所以需要開啓子線程進行獲取json數據;

package com.baihe.newsconsult.util;

import android.os.Handler;

import com.baihe.newsconsult.test.MyJson;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;

/**
 * Created by crh
 * Project_Name: NewsConsult
 * Package_Name: com.baihe.newsconsult.util
 * Date: 2019/5/8
 * Time: 18:46
 */
public class GetJson {
    static String  jsonUrl;
    public static List<MyJson.ResultBean.DataBean> list;

    public GetJson(String jsonUrl) {
        this.jsonUrl = jsonUrl;
    }

    private static Handler handler;//備用進行UI等其他操作
    private static String result;//獲取結果
    public static String getJson() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                //耗時的網絡操作必須要在這種子線程裏面去做
                URL url = null;

                //建立的http鏈接
                HttpURLConnection httpConn = null;

                //請求的輸入流
                BufferedReader in = null;

                //輸入流的緩衝
                StringBuffer sb = new StringBuffer();

                try {
                    url = new URL(jsonUrl);

                    in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));

                    String str = null;

                    //一行一行進行讀入
                    while ((str = in.readLine()) != null) {
                        sb.append(str);
                    }
                } catch (Exception ex) {

                } finally {
                    try {
                        if (in != null) {
                            in.close(); //關閉流
                        }
                    } catch (IOException ex) {

                    }
                }
                result = sb.toString();
            }

        }).start();
        return result;
    }

    public static List<MyJson.ResultBean.DataBean> returnList() {
         MyJson.ResultBean.DataBean dataBean;
        //開始進行數據的封裝
        try{
            JSONObject object1 = JSONObject.fromObject(jsonUrl) ;
            JSONObject object2 = object1.getJSONObject("result");
            JSONArray jsonArray=object2.getJSONArray("data");
            if(jsonArray.size() > 0 ){
                //遍歷jsonArray數組,把每個對象轉成json對象
                for(int i = 0 ;i < jsonArray.size() ;i ++){

                    //如果jsonOjbect中還包含jsonObject的話,就繼續使用方法 getJSONObject(key) 返回下一層的json對象
//							JSONObject sub_jsonObject = jsonObject.getJSONObject("searchinfo") ;
                    System.out.println(jsonArray.get(i)) ;
                    //開始對象的封裝
                    dataBean=new MyJson.ResultBean.DataBean(jsonArray.getString(0),jsonArray.getString(1),
                            jsonArray.getString(2),jsonArray.getString(3),jsonArray.getString(4),jsonArray.getString(5),
                            jsonArray.getString(6),jsonArray.getString(7),jsonArray.getString(8));
                    list.add(dataBean);
                }
            }


        }catch(Exception e){

        }
        return list;
    }
    //parm:請求的url鏈接  返回的是json字符串
    public static String getURLContent(String urlStr) {
        //請求的url
        URL url = null;

        //建立的http鏈接
        HttpURLConnection httpConn = null;

        //請求的輸入流
        BufferedReader in = null;

        //輸入流的緩衝
        StringBuffer sb = new StringBuffer();

        try {
            url = new URL(urlStr);

            in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));

            String str = null;

            //一行一行進行讀入
            while ((str = in.readLine()) != null) {
                sb.append(str);
            }
        } catch (Exception ex) {

        } finally {
            try {
                if (in != null) {
                    in.close(); //關閉流
                }
            } catch (IOException ex) {

            }
        }
        String result = sb.toString();
        return result;
    }

}


這是jar包的地址,用者自取

鏈接:https://pan.baidu.com/s/1lbd2jIIME5X-83y9fldWUw 
提取碼:3l2k 
複製這段內容後打開百度網盤手機App,操作更方便哦
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章