Java中Json字符串直接转换为对象的方法(包括多层List集合)
使用到的类:net.sf.json.JSONObject
使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph.jar,morph-1.0.1.jar
下面是例子代码:
//JSON转换 JSONObjectjsonObj=JSONObject.fromObject(jsonStrBody); Map<String,Class>classMap=newHashMap<String,Class>(); classMap.put("results",WeatherBean_Baidu_City.class); classMap.put("index",WeatherBean_Baidu_City_Index.class); classMap.put("weather_data",WeatherBean_Baidu_City_Weatherdata.class); //将JSON转换成WeatherBean_Baidu WeatherBean_Baiduweather=(WeatherBean_Baidu)JSONObject.toBean(jsonObj, WeatherBean_Baidu.class,classMap); System.out.println(weather.getResults());
使用到的几个JAVA类代码:
packagecom.lenovo.conference.entity.vo; importjava.io.Serializable; importjava.util.List; /** *天气Bean * *@authorSHANHY * */ @SuppressWarnings("serial") publicclassWeatherBean_BaiduimplementsSerializable{ privateStringerror;//错误号 privateStringstatus;//状态值 privateStringdate;//日期 privateList<WeatherBean_Baidu_City>results;//城市天气预报集合(因为一次可以查询多个城市) publicWeatherBean_Baidu(){ super(); } publicStringgetError(){ returnerror; } publicvoidsetError(Stringerror){ this.error=error; } publicStringgetStatus(){ returnstatus; } publicvoidsetStatus(Stringstatus){ this.status=status; } publicStringgetDate(){ returndate; } publicvoidsetDate(Stringdate){ this.date=date; } publicList<WeatherBean_Baidu_City>getResults(){ returnresults; } publicvoidsetResults(List<WeatherBean_Baidu_City>results){ this.results=results; } }
packagecom.lenovo.conference.entity.vo; importjava.io.Serializable; importjava.util.List; /** *天气Bean * *@authorSHANHY * */ @SuppressWarnings("serial") publicclassWeatherBean_Baidu_CityimplementsSerializable{ privateStringcurrentCity;//城市名称 privateStringpm25;//pm2.5值 privateList<WeatherBean_Baidu_City_Index>index;//指数集合 privateList<WeatherBean_Baidu_City_Weatherdata>weather_data;//几天的天气集合 publicWeatherBean_Baidu_City(){ super(); } publicStringgetCurrentCity(){ returncurrentCity; } publicvoidsetCurrentCity(StringcurrentCity){ this.currentCity=currentCity; } publicStringgetPm25(){ returnpm25; } publicvoidsetPm25(Stringpm25){ this.pm25=pm25; } publicList<WeatherBean_Baidu_City_Index>getIndex(){ returnindex; } publicvoidsetIndex(List<WeatherBean_Baidu_City_Index>index){ this.index=index; } publicList<WeatherBean_Baidu_City_Weatherdata>getWeather_data(){ returnweather_data; } publicvoidsetWeather_data( List<WeatherBean_Baidu_City_Weatherdata>weather_data){ this.weather_data=weather_data; } }
packagecom.lenovo.conference.entity.vo; importjava.io.Serializable; /** *天气Bean * *@authorSHANHY * */ @SuppressWarnings("serial") publicclassWeatherBean_Baidu_City_WeatherdataimplementsSerializable{ privateStringdate;//日期 privateStringdayPictureUrl;//白天的天气图片 privateStringnightPictureUrl;//晚上的天气图片 privateStringweather;//天气 privateStringwind;//风向 privateStringtemperature;//温度 publicWeatherBean_Baidu_City_Weatherdata(){ super(); } publicStringgetDate(){ returndate; } publicvoidsetDate(Stringdate){ this.date=date; } publicStringgetDayPictureUrl(){ returndayPictureUrl; } publicvoidsetDayPictureUrl(StringdayPictureUrl){ this.dayPictureUrl=dayPictureUrl; } publicStringgetNightPictureUrl(){ returnnightPictureUrl; } publicvoidsetNightPictureUrl(StringnightPictureUrl){ this.nightPictureUrl=nightPictureUrl; } publicStringgetWeather(){ returnweather; } publicvoidsetWeather(Stringweather){ this.weather=weather; } publicStringgetWind(){ returnwind; } publicvoidsetWind(Stringwind){ this.wind=wind; } publicStringgetTemperature(){ returntemperature; } publicvoidsetTemperature(Stringtemperature){ this.temperature=temperature; } }
packagecom.lenovo.conference.entity.vo; importjava.io.Serializable; /** *天气Bean * *@authorSHANHY * */ @SuppressWarnings("serial") publicclassWeatherBean_Baidu_City_IndeximplementsSerializable{ privateStringtitle;//标题 privateStringzs;//舒适度 privateStringtipt;//指数简述 privateStringdes;//指数概述 publicWeatherBean_Baidu_City_Index(){ super(); } publicStringgetTitle(){ returntitle; } publicvoidsetTitle(Stringtitle){ this.title=title; } publicStringgetZs(){ returnzs; } publicvoidsetZs(Stringzs){ this.zs=zs; } publicStringgetTipt(){ returntipt; } publicvoidsetTipt(Stringtipt){ this.tipt=tipt; } publicStringgetDes(){ returndes; } publicvoidsetDes(Stringdes){ this.des=des; } }
例子中解析所对应的JSON字符串
{"error":0,"status":"success","date":"2015-01-15","results":[{"currentCity":"南京","pm25":"83","index":[{"title":"穿衣","zs":"较冷","tipt":"穿衣指数","des":"建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。"},{"title":"洗车","zs":"较适宜","tipt":"洗车指数","des":"较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。"},{"title":"旅游","zs":"适宜","tipt":"旅游指数","des":"天气较好,气温稍低,会感觉稍微有点凉,不过也是个好天气哦。适宜旅游,可不要错过机会呦!"},{"title":"感冒","zs":"少发","tipt":"感冒指数","des":"各项气象条件适宜,无明显降温过程,发生感冒机率较低。"},{"title":"运动","zs":"较不宜","tipt":"运动指数","des":"阴天,且天气寒冷,推荐您在室内进行低强度运动;若坚持户外运动,请选择合适的运动并注意保暖。"},{"title":"紫外线强度","zs":"最弱","tipt":"紫外线强度指数","des":"属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。"}],"weather_data":[{"date":"周四01月15日(实时:6℃)","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/yin.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/duoyun.png","weather":"阴转多云","wind":"北风微风","temperature":"8~4℃"},{"date":"周五","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/duoyun.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/qing.png","weather":"多云转晴","wind":"西北风3-4级","temperature":"12~0℃"},{"date":"周六","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/qing.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/duoyun.png","weather":"晴转多云","wind":"东北风3-4级","temperature":"8~0℃"},{"date":"周日","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/qing.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/qing.png","weather":"晴","wind":"西风微风","temperature":"10~-1℃"}]},{"currentCity":"徐州","pm25":"154","index":[{"title":"穿衣","zs":"较冷","tipt":"穿衣指数","des":"建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。"},{"title":"洗车","zs":"较适宜","tipt":"洗车指数","des":"较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。"},{"title":"旅游","zs":"适宜","tipt":"旅游指数","des":"天气较好,但丝毫不会影响您出行的心情。温度适宜又有微风相伴,适宜旅游。"},{"title":"感冒","zs":"较易发","tipt":"感冒指数","des":"天气较凉,较易发生感冒,请适当增加衣服。体质较弱的朋友尤其应该注意防护。"},{"title":"运动","zs":"较不宜","tipt":"运动指数","des":"天气较好,但考虑天气寒冷,推荐您进行各种室内运动,若在户外运动请注意保暖并做好准备活动。"},{"title":"紫外线强度","zs":"最弱","tipt":"紫外线强度指数","des":"属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。"}],"weather_data":[{"date":"周四01月15日(实时:6℃)","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/duoyun.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/duoyun.png","weather":"多云","wind":"南风微风","temperature":"10~3℃"},{"date":"周五","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/duoyun.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/duoyun.png","weather":"多云","wind":"北风3-4级","temperature":"11~-4℃"},{"date":"周六","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/duoyun.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/duoyun.png","weather":"多云","wind":"东风微风","temperature":"6~-4℃"},{"date":"周日","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/duoyun.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/duoyun.png","weather":"多云","wind":"西风3-4级","temperature":"11~-1℃"}]}]}
以上这篇Java中Json字符串直接转换为对象的方法(包括多层List集合)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。