zoukankan      html  css  js  c++  java
  • Android开发之从网络URL上下载JSON数据

    网络下载拉取数据中,json数据是一种格式化的xml数据,非常轻量方便,效率高,体验好等优点,下面就android中如何从给定的url下载json数据给予解析:

    主要使用http请求方法,并用到HttpGet和HttpResponse等对象来获取数据。直接上实例代码吧:、

    (1)从网络URL上读取json字符串的实现

    public String readJSONFeed(String url){
            StringBuilder stringBuilder = new StringBuilder();
            HttpClient client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(url);
            HttpResponse response;
            try {
                response = client.execute(httpGet);
                StatusLine statusLine = response.getStatusLine();
                int statusCode = statusLine.getStatusCode();
                if(statusCode == 200){
                    HttpEntity entity = response.getEntity();
                    InputStream content = entity.getContent();
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(content));
                    String line ;
                    while((line = reader.readLine())!=null){
                        stringBuilder.append(line);
                    }
                }else{
                    Log.e("JSON", "Failed to download file");
                }
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return stringBuilder.toString();
        }

    (2)异步方法拉取网络上的数据的实现:

    private class ReadJSONFeedTask extends AsyncTask<String, Void, String>{
    
            StringBuilder stringBuilder  = new StringBuilder();
            @Override
            protected String doInBackground(String... urls) {
                // TODO Auto-generated method stub
                return readJSONFeed(urls[0]);
            }
    
            @Override
            protected void onPostExecute(String result) {
                // TODO Auto-generated method stub
                String strItem;
                try {
                    JSONArray jsonArray = new JSONArray(result);
                    for(int i = 0;i<jsonArray.length();i++){
                        JSONObject jsonObject = jsonArray.getJSONObject(i);
                        strItem= jsonObject.getString("appeId")+
                                " - "+jsonObject.getString("inputTime") +"
    ";
                        stringBuilder.append(strItem);
                    }
                    ((TextView)findViewById(R.id.tvJson)).setText(stringBuilder.toString());
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
            }
            
        }

    (3)最后如何启一个异步下载任务呢?其实就是new一个上面的异步类对象并执行即可

    new ReadJSONFeedTask().execute(jsonUrl);

    到此为止,从网络URL上下载json数据已经成功完成了。最后下载后的数据显示结果如下:

  • 相关阅读:
    6.7-CU微程序设计
    6.6-CU组合逻辑设计
    6.5-CU的功能
    6.4-微操作命令的分析
    6.3-时序产生器
    6.2-指令的执行
    6.1-CPU的组成与功能
    5.3-指令格式设计
    【Java循环使用 + JS循环】
    JSON转换集合,报错exepct '[', but {, pos 1, json或者syntax error, expect {, actual [, pos 0
  • 原文地址:https://www.cnblogs.com/JczmDeveloper/p/3858350.html
Copyright © 2011-2022 走看看