android如何解析网络上的json数据。

1.网络上的json对象

 {"desc":"OK","status":1000,"data":{"wendu":"-1","ganmao":"昼夜温差较大,较易发生感冒,请适当增减衣服。体质较弱的朋友请注意防护。","forecast":[{"fengxiang":"无持续风向","fengli":"微风级","high":"高温 4℃","type":"霾","low":"低温 -4℃","date":"29日星期二"},{"fengxiang":"无持续风向","fengli":"3-4级","high":"高温 5℃","type":"晴","low":"低温 -6℃","date":"30日星期三"},{"fengxiang":"无持续风向","fengli":"微风级","high":"高温 4℃","type":"多云","low":"低温 -6℃","date":"31日星期四"},{"fengxiang":"无持续风向","fengli":"微风级","high":"高温 4℃","type":"晴","low":"低温 -4℃","date":"1日星期五"},{"fengxiang":"无持续风向","fengli":"微风级","high":"高温 5℃","type":"晴","low":"低温 -4℃","date":"2日星期六"}],"yesterday":{"fl":"微风","fx":"无持续风向","high":"高温 3℃","type":"晴","low":"低温 -5℃","date":"28日星期一"},"aqi":"421","city":"北京"}}

2.MainActivity.java

package com.exale.asynctasktest;

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

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.exale.day7asynctasktest.R;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;



public class MainActivity extends Activity {

	private ImageView imageView;
	int count = 0;
	private TextView _tTextView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		_tTextView = (TextView) findViewById(R.id.show);
	}
	
	public void showjson1(View view) {
		MyAsyncTask myAsyncTask = new MyAsyncTask();
		myAsyncTask.execute("http://wthrcdn.etouch.cn/weather_mini?city=%E5%8C%97%E4%BA%AC");
	}
	public class MyAsyncTask extends AsyncTask<String, Void, JSONObject>{
		
		private JSONObject obj;
		
		@Override
		protected void onPreExecute() {
			// TODO Auto-generated method stub
			super.onPreExecute();
			Log.e("MyAsyncTask", "onPreExecute");
		}
		@Override
		protected JSONObject doInBackground(String... params) {
			// TODO Auto-generated method stub
			String urlString =params[0];
			try {
				URL url = new URL("http://wthrcdn.etouch.cn/weather_mini?city=%E5%8C%97%E4%BA%AC");
				HttpURLConnection conn= (HttpURLConnection) url.openConnection();
				InputStream inputStream = conn.getInputStream();
				BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));  
				String buf="";
				while((buf = br.readLine())!=null){  
		        	Log.i("a",buf);
		        	obj = new JSONObject(buf);
		        	Log.i("a",obj.toString());
		        }  
			} catch (MalformedURLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (JSONException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return obj;
		}
		@Override
		protected void onProgressUpdate(Void... values) {
			// TODO Auto-generated method stub
//			Toast.makeText(MainActivity.this, "onProgressUpdate", 0).show();
			Log.e("MyAsyncTask", "onProgressUpdate");
			super.onProgressUpdate(values);
		}

		@Override
		protected void onPostExecute(JSONObject result) {
			// TODO Auto-generated method stub
			super.onPostExecute(result);
			MyJson mJson= new MyJson();
			try {
				mJson.setDesc(result.getString("desc"));
				String descString=mJson.getDesc();
				Log.i("a",descString );
				mJson.setStatus(result.getString("status"));
				String statusString=mJson.getStatus();
				Log.i("a",statusString );
				
			
//				data dclazz=mJson.setData(data);
				data dclass = new data();
//				mJson.setData(dclass);
				JSONObject datajJsonObject=result.getJSONObject("data");
				
				dclass.setWendu(result.getJSONObject("data").getString("wendu"));
				
				String wendusString=dclass.getWendu();
				
				Log.i("温度",wendusString+"温度是多少" );
				
				dclass.setGanmao(result.getJSONObject("data").getString("ganmao"));
				String ganmaoString=dclass.getGanmao();
				Log.i("感冒",ganmaoString+"感冒" );
				
				 JSONArray fcastArray = datajJsonObject.getJSONArray("forecast");
				 List<forecast> list =  new ArrayList<forecast>();
				 //first forecast
				 forecast forcast=new forecast();
				 JSONObject firstforcast = fcastArray.getJSONObject(0);
				 
				 forcast.setFengxiang(firstforcast.getString("fengxiang"));
				 String firstfengxiang =forcast.getFengxiang();
				 Log.i("fengxiang",firstfengxiang );
				 
				 forcast.setFengli(firstforcast.getString("fengli"));
				 String firstfengli=forcast.getFengli();
				 Log.i("fengli",firstfengli );
				 
				 forcast.setHigh(firstforcast.getString("high"));
				 String firsthigh=forcast.getHigh();
				 Log.i("high",firsthigh );
				 
				 forcast.setType(firstforcast.getString("type"));
				 String firsttype=forcast.getType();
				 Log.i("type",firsttype );
				 
				 forcast.setLow(firstforcast.getString("low"));
				 String firstlow=forcast.getLow();
				 Log.i("low",firstlow );
				 
				 forcast.setDate(firstforcast.getString("date"));
				 String firstdate=forcast.getDate();
				 Log.i("date",firstdate );
				 //second forecast
				 forecast forcast1=new forecast();
				 JSONObject secondforcast = fcastArray.getJSONObject(1);
				 
				 forcast1.setFengxiang(secondforcast.getString("fengxiang"));
				 String secondfengxiang =forcast1.getFengxiang();
				 Log.i("fengxiang1",secondfengxiang );
				 
				 forcast1.setFengli(secondforcast.getString("fengli"));
				 String secondfengli=forcast1.getFengli();
				 Log.i("fengli1",secondfengli );
				 
				 forcast1.setHigh(secondforcast.getString("high"));
				 String secondhigh=forcast1.getHigh();
				 Log.i("high1",secondhigh );
				 
				 forcast1.setType(secondforcast.getString("type"));
				 String secondtype=forcast1.getType();
				 Log.i("type1",secondtype );
				 
				 forcast1.setLow(secondforcast.getString("low"));
				 String secondlow=forcast1.getLow();
				 Log.i("low1",secondlow );
				 
				 forcast1.setDate(secondforcast.getString("date"));
				 String seconddate=forcast1.getDate();
				 Log.i("date1",seconddate );
				 //third forcast
				 forecast forcast2=new forecast();
				 JSONObject thirdforcast = fcastArray.getJSONObject(2);
				 
				 forcast2.setFengxiang(thirdforcast.getString("fengxiang"));
				 String tsecondfengxiang =forcast2.getFengxiang();
				 Log.i("fengxiang2",tsecondfengxiang );
				 
				 forcast2.setFengli(thirdforcast.getString("fengli"));
				 String tsecondfengli=forcast2.getFengli();
				 Log.i("fengli2",tsecondfengli );
				 
				 forcast2.setHigh(thirdforcast.getString("high"));
				 String tsecondhigh=forcast2.getHigh();
				 Log.i("high2",tsecondhigh );
				 
				 forcast2.setType(thirdforcast.getString("type"));
				 String tsecondtype=forcast2.getType();
				 Log.i("type2",tsecondtype );
				 
				 forcast2.setLow(thirdforcast.getString("low"));
				 String tsecondlow=forcast2.getLow();
				 Log.i("low2",tsecondlow );
				 
				 forcast2.setDate(thirdforcast.getString("date"));
				 String tseconddate=forcast2.getDate();
				 Log.i("date2",tseconddate );
				 
				//four forcast
				 forecast forcast3=new forecast();
				 JSONObject fthirdforcast = fcastArray.getJSONObject(3);
				 
				 forcast3.setFengxiang(fthirdforcast.getString("fengxiang"));
				 String ftsecondfengxiang =forcast3.getFengxiang();
				 Log.i("fengxiang2",ftsecondfengxiang );
				 
				 forcast3.setFengli(fthirdforcast.getString("fengli"));
				 String ftsecondfengli=forcast3.getFengli();
				 Log.i("fengli2",ftsecondfengli );
				 
				 forcast3.setHigh(fthirdforcast.getString("high"));
				 String ftsecondhigh=forcast3.getHigh();
				 Log.i("high2",ftsecondhigh );
				 
				 forcast3.setType(fthirdforcast.getString("type"));
				 String ftsecondtype=forcast3.getType();
				 Log.i("type2",ftsecondtype );
				 
				 forcast3.setLow(fthirdforcast.getString("low"));
				 String ftsecondlow=forcast3.getLow();
				 Log.i("low2",ftsecondlow );
				 
				 forcast3.setDate(fthirdforcast.getString("date"));
				 String ftseconddate=forcast3.getDate();
				 Log.i("date2",ftseconddate );
				 
				 list.add(forcast);
				 list.add(forcast1);
				 list.add(forcast2);
				 list.add(forcast3);
				 dclass.setFcast(list);
				 //获取yesterday
				 JSONObject yesterjJsonObject=result.getJSONObject("data").getJSONObject("yesterday");
				 yesterday yesclazz= new yesterday();
				
				 yesclazz.setFl( yesterjJsonObject.getString("fl"));
				 String yesfl=yesclazz.getFl();
				 Log.i("yesfl",yesfl);
				 yesclazz.setFx(yesterjJsonObject.getString("fx"));
				 String yesfx=yesclazz.getFx();
				 Log.i("yesfx",yesfx);
				 yesclazz.setHigh(yesterjJsonObject.getString("high"));
				 String yeshigh=yesclazz.getHigh();
				 Log.i("yeshigh",yeshigh);
				 yesclazz.setType(yesterjJsonObject.getString("type"));
				 String yestype=yesclazz.getType();
				 Log.i("yestype",yestype);
				 yesclazz.setLow(yesterjJsonObject.getString("low"));
				 String yeslow=yesclazz.getLow();
				 Log.i("yeslow",yeslow);
				 yesclazz.setDate(yesterjJsonObject.getString("date"));
				 String yesdate=yesclazz.getDate();
				 Log.i("yesdate",yesdate);
				 
				 dclass.setYestday(yesclazz);
				 
				dclass.setAgi(result.getJSONObject("data").getString("aqi"));
				String apiString=dclass.getAgi();
				Log.i("aqi",apiString );
					
				dclass.setCity(result.getJSONObject("data").getString("city"));
				String cityString=dclass.getCity();
				Log.i("城市",cityString );
				 	
				mJson.setData(dclass);
				
				_tTextView.setText(mJson.toString());
				
			} catch (JSONException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	}
}

2.MyJson.java

package com.exale.asynctasktest;

public class MyJson {
	private String desc;
	private String status;
	private data data;
	public String getDesc() {
		return desc;
	}
	public void setDesc(String desc) {
		this.desc = desc;
	}
	public String getStatus() {
		return status;
	}
	public void setStatus(String status) {
		this.status = status;
	}
	public data getData() {
		return data;
	}
	public void setData(data data) {
		this.data = data;
	}
	@Override
	public String toString() {
		return "MyJson [desc=" + desc + ", status=" + status + "\n, data=" + data
				+ "]\n";
	}
}
3.data.java

package com.exale.asynctasktest;

import java.util.List;

public class data {
	private String wendu;

	private String ganmao;
	private List<forecast> fcast;
	private yesterday yestday;
	private String agi;
	private String city;
	public String getWendu() {
		return wendu;
	}
	public void setWendu(String wendu) {
		this.wendu = wendu;
	}
	public String getGanmao() {
		return ganmao;
	}
	public void setGanmao(String ganmao) {
		this.ganmao = ganmao;
	}
	public List<forecast> getFcast() {
		return fcast;
	}
	public void setFcast(List<forecast> fcast) {
		this.fcast = fcast;
	}
	public yesterday getYestday() {
		return yestday;
	}
	public void setYestday(yesterday yestday) {
		this.yestday = yestday;
	}
	public String getAgi() {
		return agi;
	}
	public void setAgi(String agi) {
		this.agi = agi;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	@Override
	public String toString() {
		return "data [wendu=" + wendu + ", \nganmao=" + ganmao + "\n, fcast="
				+ fcast + ", yestday=" + yestday + ", agi=" + agi + ", city="
				+ city + "]\n";
	}
}
3.forecast.java

package com.exale.asynctasktest;

public class forecast {
	private String fengxiang;

	private String fengli;

	private String high;

	private String type;

	private String low;

	private String date;

	public String getFengxiang() {
		return fengxiang;
	}

	public void setFengxiang(String fengxiang) {
		this.fengxiang = fengxiang;
	}

	public String getFengli() {
		return fengli;
	}

	public void setFengli(String fengli) {
		this.fengli = fengli;
	}

	public String getHigh() {
		return high;
	}

	public void setHigh(String high) {
		this.high = high;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public String getLow() {
		return low;
	}

	public void setLow(String low) {
		this.low = low;
	}

	public String getDate() {
		return date;
	}

	public void setDate(String date) {
		this.date = date;
	}

	@Override
	public String toString() {
		return "forecast [fengxiang=" + fengxiang + ", fengli=" + fengli
				+ ", high=" + high + ", type=" + type + ", low=" + low
				+ ", date=" + date + "]\n";
	}
}

5.yesterday
package com.exale.asynctasktest;

public class yesterday {
	private String fl;

	private String fx;

	private String high;

	private String type;

	private String low;

	private String date;

	public String getFl() {
		return fl;
	}

	public void setFl(String fl) {
		this.fl = fl;
	}

	public String getFx() {
		return fx;
	}

	public void setFx(String fx) {
		this.fx = fx;
	}

	public String getHigh() {
		return high;
	}

	public void setHigh(String high) {
		this.high = high;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public String getLow() {
		return low;
	}

	public void setLow(String low) {
		this.low = low;
	}

	public String getDate() {
		return date;
	}

	public void setDate(String date) {
		this.date = date;
	}

	@Override
	public String toString() {
		return "yesterday [fl=" + fl + ", fx=" + fx + ", high=" + high
				+ ", type=" + type + ", low=" + low + ", date=" + date + "]"+"\n";
	}

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值