不适用工具类解析Json

6 篇文章 0 订阅

解析的数据:

{
    "citycode": "101051301",
    "citydesc": "黑龙江 双鸭山",
    "cityname": "双鸭山",
    "data": [
        {
            "date": "2015-08-29",
            "icon": "d07|n07",
            "temperature": "20°C/16°C",
            "weather": "小雨",
            "winddirect": "东风"
        },
        {
            "date": "2015-08-30",
            "icon": "d07|n07",
            "temperature": "21°C/16°C",
            "weather": "小雨",
            "winddirect": "东风3-4级转微风"
        },
        {
            "date": "2015-08-31",
            "icon": "d07|n01",
            "temperature": "23°C/16°C",
            "weather": "小雨转多云",
            "winddirect": "东风转东南风微风"
        },
        {
            "date": "2015-09-01",
            "icon": "d01|n01",
            "temperature": "24°C/16°C",
            "weather": "多云",
            "winddirect": "东南风转南风微风"
        },
        {
            "date": "2015-09-02",
            "icon": "d03|n03",
            "temperature": "25°C/16°C",
            "weather": "阵雨",
            "winddirect": "南风转东北风微风"
        },
        {
            "date": "2015-09-03",
            "icon": "d03|n01",
            "temperature": "24°C/15°C",
            "weather": "阵雨转多云",
            "winddirect": "东北风转北风微风"
        }
    ],
    "lastupdate": "2015-08-29 18:13:50",
    "live": {
        "humidity": "48%",
        "temperature": "3℃",
        "updatetime": "10:00",
        "winddirect": "西南风2级"
    },
    "publishtime": "2015年08月29日18:00"
}


创建工具类



import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
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;

public class HttpUtil {
	
	//得到服务器端的json字符串
	public static String getJsonString(String path) throws IOException
	{
		URL url = new URL(path);
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		
		conn.setRequestMethod("GET");
		conn.setConnectTimeout(5000);
		conn.setDoInput(true);
		
		if(conn.getResponseCode()==200)
		{
			InputStream in = conn.getInputStream();
			return changeToString(in);
		}
		return null;
	}

	private static String changeToString(InputStream in) throws IOException {
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		byte[] arr = new byte[1024];
		int len = 0;
		while((len = in.read(arr))!=-1)
		{
			bos.write(arr,0,len);
		}
		return new String(bos.toByteArray());
	}
	
	//解析json字符串,返回Person对象的集合
	public static Weather jsonParser(String jsonString) throws JSONException
	{
		Weather weather = new Weather();
		
		JSONObject obj = new JSONObject(jsonString);
		String cityname = obj.getString("cityname");
		String citycode = obj.getString("citycode");
		String citydesc = obj.getString("citydesc");
		String publishtime = obj.getString("publishtime");
		String lastupdate = obj.getString("lastupdate");
		weather.setCityName(cityname);
		weather.setCityCode(citycode);
		weather.setCityDesc(citydesc);
		weather.setPublishTime(publishtime);
		weather.setLastUpdate(lastupdate);
		
		JSONArray array = obj.getJSONArray("data");
		List<WeatherData> data = new ArrayList<WeatherData>();
		for(int i=0;i<array.length();i++)
		{
			JSONObject jsonObj = array.getJSONObject(i);
			String date = jsonObj.getString("date");
			String icon = jsonObj.getString("icon");
			String wea = jsonObj.getString("weather");
			String temperature = jsonObj.getString("temperature");
			String winddirect = jsonObj.getString("winddirect");
			WeatherData wd = new WeatherData();
			wd.setDate(date);
			wd.setIcon(icon);
			wd.setWeather(wea);
			wd.setTemperature(temperature);
			wd.setWinddirect(winddirect);
			data.add(wd);
		}
		weather.setData(data);
		JSONObject jsonObject = obj.getJSONObject("live");
		String updatetime = jsonObject.getString("updatetime");
		String temperature = jsonObject.getString("temperature");
		String humidity = jsonObject.getString("humidity");
		String winddirect = jsonObject.getString("winddirect");
		
		Live live = new Live();
		live.setUpdateTime(updatetime);
		live.setTemperature(temperature);
		live.setHumidity(humidity);
		live.setWinddirect(winddirect);
		
		weather.setLive(live);
		
		return weather;
		
	}
 
}




import java.util.List;

public class Weather {
	private String cityName;
	private String cityCode;
	private String cityDesc;
	private String publishTime;
	private String lastUpdate;
	private List<WeatherData> data;
	private Live live;
	
	public Weather() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Weather(String cityName, String cityCode, String cityDesc,
			String publishTime, String lastUpdate, List<WeatherData> data,
			Live live) {
		super();
		this.cityName = cityName;
		this.cityCode = cityCode;
		this.cityDesc = cityDesc;
		this.publishTime = publishTime;
		this.lastUpdate = lastUpdate;
		this.data = data;
		this.live = live;
	}
	public String getCityName() {
		return cityName;
	}
	public void setCityName(String cityName) {
		this.cityName = cityName;
	}
	public String getCityCode() {
		return cityCode;
	}
	public void setCityCode(String cityCode) {
		this.cityCode = cityCode;
	}
	public String getCityDesc() {
		return cityDesc;
	}
	public void setCityDesc(String cityDesc) {
		this.cityDesc = cityDesc;
	}
	public String getPublishTime() {
		return publishTime;
	}
	public void setPublishTime(String publishTime) {
		this.publishTime = publishTime;
	}
	public String getLastUpdate() {
		return lastUpdate;
	}
	public void setLastUpdate(String lastUpdate) {
		this.lastUpdate = lastUpdate;
	}
	public List<WeatherData> getData() {
		return data;
	}
	public void setData(List<WeatherData> data) {
		this.data = data;
	}
	public Live getLive() {
		return live;
	}
	public void setLive(Live live) {
		this.live = live;
	}
	@Override
	public String toString() {
		return "Weather [cityName=" + cityName + ", cityCode=" + cityCode
				+ ", cityDesc=" + cityDesc + ", publishTime=" + publishTime
				+ ", lastUpdate=" + lastUpdate + ", data=" + data + ", live="
				+ live + "]";
	}
	
	
	

}

public class Live {
	
	private String updateTime;
	private String temperature;
	private String humidity;
	private String winddirect;
	
	public Live() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Live(String updateTime, String temperature, String humidity,
			String winddirect) {
		super();
		this.updateTime = updateTime;
		this.temperature = temperature;
		this.humidity = humidity;
		this.winddirect = winddirect;
	}
	public String getUpdateTime() {
		return updateTime;
	}
	public void setUpdateTime(String updateTime) {
		this.updateTime = updateTime;
	}
	public String getTemperature() {
		return temperature;
	}
	public void setTemperature(String temperature) {
		this.temperature = temperature;
	}
	public String getHumidity() {
		return humidity;
	}
	public void setHumidity(String humidity) {
		this.humidity = humidity;
	}
	public String getWinddirect() {
		return winddirect;
	}
	public void setWinddirect(String winddirect) {
		this.winddirect = winddirect;
	}
	@Override
	public String toString() {
		return "Live [updateTime=" + updateTime + ", temperature="
				+ temperature + ", humidity=" + humidity + ", winddirect="
				+ winddirect + "]";
	}
}

public class WeatherData {
	private String date;
	private String icon;
	private String weather;
	private String temperature;
	private String winddirect;
	
	public WeatherData() {
		super();
		// TODO Auto-generated constructor stub
	}
	public WeatherData(String date, String icon, String weather,
			String temperature, String winddirect) {
		super();
		this.date = date;
		this.icon = icon;
		this.weather = weather;
		this.temperature = temperature;
		this.winddirect = winddirect;
	}
	public String getDate() {
		return date;
	}
	public void setDate(String date) {
		this.date = date;
	}
	public String getIcon() {
		return icon;
	}
	public void setIcon(String icon) {
		this.icon = icon;
	}
	public String getWeather() {
		return weather;
	}
	public void setWeather(String weather) {
		this.weather = weather;
	}
	public String getTemperature() {
		return temperature;
	}
	public void setTemperature(String temperature) {
		this.temperature = temperature;
	}
	public String getWinddirect() {
		return winddirect;
	}
	public void setWinddirect(String winddirect) {
		this.winddirect = winddirect;
	}
	@Override
	public String toString() {
		return "WeatherData [date=" + date + ", icon=" + icon + ", weather="
				+ weather + ", temperature=" + temperature + ", winddirect="
				+ winddirect + "]";
	}
	
	
	
	
	

}


测试:


import java.io.IOException;


import org.json.JSONException;


public class Test {


	/**
	 * @param args
	 * @throws IOException 
	 * @throws JSONException 
	 */
	public static void main(String[] args) throws IOException, JSONException {
		
		String path = "http://weather.xcyh.org/101051301/json/6";
		
		String jsonStr = HttpUtil.getJsonString(path);
		System.out.println(jsonStr);
		Weather weather = HttpUtil.jsonParser(jsonStr);
		
		System.out.println(weather);
		
		


	}


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值