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集合)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。