package com.gitonway.fineday.utils.json; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.gitonway.fineday.domain.model.AreaModel; import com.gitonway.fineday.domain.model.CurrentWeaterModel; import com.gitonway.fineday.domain.model.WeaterModel; import com.gitonway.fineday.domain.model.WeaterObjModel; import android.content.Context; import android.text.TextUtils; public class WeaterJsonUtils extends JsonPacket { private WeaterModel model = new WeaterModel(); public WeaterJsonUtils(Context context) { super(context); } public WeaterModel readJson(String jsonStr) throws Exception { if (TextUtils.isEmpty(jsonStr)) return null; jsonStr=toJson(jsonStr); JSONObject obj = new JSONObject(jsonStr); // 获取时间 model.setTime(getLong("dataUptime", obj.getJSONObject("realtime"))); // 获取地区 model.setArea(getAreaList(obj.getJSONArray("area"))); // 获取天气详情 model.setWeather(getWeaterObjList(obj.getJSONArray("weather"))); //获取实时天气情况 model.setCurrentWeater(getCurrentWeater(obj.getJSONObject("realtime"))); // 获取PM2.5信息 model.setPm25(getPM25Info(obj.getJSONObject("pm25"))); return model; } /** * 获取地区集合 * * @param array 地区集合 * @return * @throws JSONException */ private List<AreaModel> getAreaList(JSONArray array) throws JSONException { List<AreaModel> areaList = new ArrayList<AreaModel>(); for (int i = 0; i < array.length(); i++) { AreaModel model = new AreaModel(); JSONArray subArray=array.getJSONArray(i); //获取地区名称 model.setAreaname(subArray.getString(0)); //获取地区ID model.setAreaid(subArray.getString(1)); areaList.add(model); } return areaList; } /** * 获取天气详细列表 * @param array * @return * @throws JSONException */ private List<WeaterObjModel> getWeaterObjList(JSONArray array) throws JSONException{ List<WeaterObjModel> weaterList=new ArrayList<WeaterObjModel>(); for (int i = 0; i < array.length(); i++) { WeaterObjModel model=new WeaterObjModel(); JSONObject obj=array.getJSONObject(i); JSONObject subObj=obj.getJSONObject("info"); //白天天气信息 JSONArray sunArray=subObj.getJSONArray("day"); //夜间天气信息 JSONArray moonArray=subObj.getJSONArray("night"); //设置时间 model.setDate(getString("date", obj)); //白天天气类型 model.setTypeSun(sunArray.getString(0)); //夜间天气类型 model.setTypeMoon(moonArray.getString(0)); //白天天气情况 model.setWcSun(sunArray.getString(1)); //夜间天气情况 model.setWcMoon(moonArray.getString(1)); //最高温度 model.setTempH(sunArray.getString(2)+"℃"); //最低温度 model.setTempL(moonArray.getString(2)+"℃"); //白天风向 model.setWindSun(sunArray.getString(3)); //夜间风向 model.setWindMoon(moonArray.getString(3)); //白天风力 model.setWindPowerSun(sunArray.getString(4)); //夜间风力 model.setWindPowerMoon(moonArray.getString(4)); weaterList.add(model); } return weaterList; } private CurrentWeaterModel getCurrentWeater(JSONObject obj) throws JSONException{ CurrentWeaterModel model=new CurrentWeaterModel(); model.setDataUptime(getLong("dataUptime", obj)); model.setDate(getString("date", obj)); model.setDirect(getString("direct", obj.getJSONObject("wind"))); model.setHumidity(getString("humidity", obj.getJSONObject("weather"))); model.setInfo(getString("info", obj.getJSONObject("weather"))); model.setPower(getString("power", obj.getJSONObject("wind"))); model.setTemperature(getString("temperature", obj.getJSONObject("weather"))); model.setImg(getString("img", obj.getJSONObject("weather"))); return model; } /** * 获取PM2.5 * * @param obj * @return * @throws JSONException */ private int getPM25Info(JSONObject obj) throws JSONException{ return getInt("aqi", obj); } }