1. 程式人生 > >解析心知天氣API介面返回的json資料

解析心知天氣API介面返回的json資料

json資料結構如下(北京今天和未來4天的預報)

心知天氣json資料型別說明原址:http://www.thinkpage.cn/doc#jsonp

{
  "results": [{
    "location": {
      "id": "WX4FBXXFKE4F",
      "name": "北京",
      "country": "CN",
      "path": "北京,北京,中國",
      "timezone": "Asia/Shanghai",
      "timezone_offset": "+08:00"
    },
    "daily": [{                         //返回指定days天數的結果
      "date": "2015-09-20",             //日期
      "text_day": "多雲",               //白天天氣現象文字
      "code_day": "4",                  //白天天氣現象程式碼
      "text_night": "晴",               //晚間天氣現象文字
      "code_night": "0",                //晚間天氣現象程式碼
      "high": "26",                     //當天最高溫度
      "low": "17",                      //當天最低溫度
      "precip": "0",                    //降水概率,範圍0~100,單位百分比
      "wind_direction": "",             //風向文字
      "wind_direction_degree": "255",   //風向角度,範圍0~360
      "wind_speed": "9.66",             //風速,單位km/h(當unit=c時)、mph(當unit=f時)
      "wind_scale": ""                  //風力等級
    }, {
      "date": "2015-09-21",
      "text_day": "晴",
      "code_day": "0",
      "text_night": "晴",
      "code_night": "0",
      "high": "27",
      "low": "17",
      "precip": "0",
      "wind_direction": "",
      "wind_direction_degree": "157",
      "wind_speed": "17.7",
      "wind_scale": "3"
    }, {
      ...                               //更多返回結果
    }],
    "last_update": "2015-09-20T18:00:00+08:00" //資料更新時間(該城市的本地時間)
  }]
}

解析如下

                     JSONObject jsonObject = new JSONObject(response);                  //response為返回的String型json資料
            JSONArray results = jsonObject.getJSONArray("results");                //得到鍵為results的JSONArray
            
            JSONObject location = results.getJSONObject(0).getJSONObject("location");   //得到results陣列第一個資料中鍵為location的JSONObject
            
            JSONObject updateTime = results.getJSONObject(0);                            //得到得到results陣列第一個資料
            
            JSONArray daily = results.getJSONObject(0).getJSONArray("daily");           //得到results陣列第一個資料中鍵為daily的JSONArray
            
            JSONObject today = daily.getJSONObject(0);                                   //得到daily中今天的天氣資料,即第一個
            
             
            String cityName = location.getString("name");                          //獲得城市名
            String weatherCode = location.getString("id");                          //獲得城市id
            String temp1 = today.getString("low");                          //獲得最低溫度
            String temp2 = today.getString("high");                          //獲得最高溫度
            String weatherDesp = today.getString("text_day");                          //獲得天氣描述
            String publishTime = updateTime.getString("last_update");                  //獲得的更新時間

其中最操蛋的是results是隻有一個json物件的陣列,只有一個json物件你用個蛋的陣列裝著啊!!!浪費了幾個小時