android json解析(JSONObject方法實現)


今天剛剛學到json解析,看了一整天,大概了解到json就是你通過一個API(我用的聚合數據的API)發送一個請求,接着會收到json數據,比如說天氣預報吧,他會給你發送一大段字符串,大概是未來幾天的天氣情況了什么的,因為這個數據我們想把它規則的展現在手機屏幕上,但是我們得到的json數據未經處理的話,很亂沒有美感,也不方便看,就需要我們解析出這些數據並展現在手機屏幕上

cityName = URLEncoder.encode(city,"UTF-8"); 這句話將漢字轉化為UTF-8編碼

 

1.首先是要獲取json數據,我是直接使用了已經集成的Volley包,獲得的數據,Volley又有get和post方法,這里使用get方法

Volley方法獲得json數據:

private void volley_get()
    {
            String cityName;
            String  city;
            @Override
                Toast.makeText(MainActivity.this, cityName, Toast.LENGTH_SHORT).show();
                String url = "http://v.juhe.cn/weather/index?format=2&cityname=%E8%8B%8F%E5%B7%9E&=你申請的Key";
              /*
              * StringRequest中的第一個參數,是我們獲取數據所調用的方法  Method.GET
              *第二個參數,是我們獲得的API的接口  url
              *第三個參數,是當請求成功時所調用的參數
              * 第四個參數,是請求失敗時所調用的參數
              * */
                StringRequest request = new StringRequest(Method.GET, url, new Response.Listener<String>()
                {
                    @Override
                    public void onResponse(String s)
                    {//參數s就是我們請求成功時返回的json數據
                        Toast.makeText(MainActivity.this, "加載數據成功", Toast.LENGTH_SHORT).show();
                    }, new Response.ErrorListener()
                    {
                        @Override
                        public void onErrorResponse(VolleyError volleyError)
                        {
                            Toast.makeText(MainActivity.this, "對不起,加載數據失敗", Toast.LENGTH_SHORT).show();
                        }
                    });
                    request.setTag("abcGet");
                    MyApplication.getHttpQueues().add(request);//因為Volley方法就是通過請求隊列的方法實現的,所以這里要加入隊列

            });
            
    }

 獲得到的天氣數據

{"resultcode":"200","reason":"successed!","result":{"sk":{"temp":"37","wind_direction":"西風","wind_strength":"2級","humidity":"49%","time":"18:28"},"today":{"temperature":"30℃~38℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"西南風微風","week":"星期二","city":"蘇州","date_y":"2016年07月26日","dressing_index":"炎熱","dressing_advice":"天氣炎熱,建議着短衫、短裙、短褲、薄型T恤衫等清涼夏季服裝。","uv_index":"很強","comfort_index":"","wash_index":"較適宜","travel_index":"較適宜","exercise_index":"較適宜","drying_index":""},"future":[{"temperature":"30℃~38℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"西南風微風","week":"星期二","date":"20160726"},{"temperature":"29℃~39℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"西風微風","week":"星期三","date":"20160727"},{"temperature":"29℃~39℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"西南風微風","week":"星期四","date":"20160728"},{"temperature":"29℃~39℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"南風微風","week":"星期五","date":"20160729"},{"temperature":"28℃~37℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"東風微風","week":"星期六","date":"20160730"},{"temperature":"29℃~39℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"西南風微風","week":"星期日","date":"20160731"},{"temperature":"29℃~39℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"西風微風","week":"星期一","date":"20160801"}]},"error_code":0}

 

然后在上邊的volley_get方法中解析json使其規則的顯現

在上邊的volley_get方法中 請求成功時調用的參數中實現

 public void onResponse(String s) { //參數s就是我們請求成功時返回的json數據
                   // tv_1.setText(s);
                    String weather_city = null;
                    String weather_date_y = null;
                    String weather_dressing_advice= null;
                    String weather_exercise_index= null;
                    String weather_temperature= null;
                    String weather_travel_index= null;
                    String weather_wea= null;
                    String weather_week= null;
                    String weather_wind= null;
    //
                    try {
                        JSONObject jsonObject = new JSONObject(s);
                        String resultcode = jsonObject.getString("resultcode");
                           if(resultcode.equals("200")){
                               JSONObject resultObject=jsonObject.getJSONObject("result");
                               JSONObject todayObject=resultObject.getJSONObject("today");
                              weather_city = todayObject.getString("city");
                            weather_date_y = todayObject.getString("date_y");
                            weather_dressing_advice = todayObject.getString("dressing_advice");
                            weather_exercise_index = todayObject.getString("exercise_index");
                            weather_temperature = todayObject.getString("temperature");
                            weather_travel_index = todayObject.getString("travel_index");
                            weather_wea = todayObject.getString("weather");
                            weather_week = todayObject.getString("week");
                            weather_wind = todayObject.getString("wind");
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    tv_1.setText("城市 :"+weather_city);
                    tv_2.setText("日期 :"+weather_date_y);
                    tv_3.setText("穿衣指數 :"+weather_dressing_advice);
                    tv_4.setText("鍛煉指數 :"+weather_exercise_index);
                    tv_5.setText("溫度 :"+weather_temperature);
                    tv_6.setText("旅行指數 :"+weather_travel_index);
                    tv_7.setText("天氣 :"+weather_wea);
                    tv_8.setText("星期 :"+weather_week);
                    tv_9.setText("風力 :"+weather_wind);
                }
            }

操作結果:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM