JavaにおけるJson文字列を直接オブジェクトに変換する(多層Listセットを含む)

10213 ワード

使用するクラス:net.sf.json.JSONObject 
JSONを使用する場合、JSONサイト上でダウンロードするjson-lib-2.2-jdk 15をインポートする以外は、JArパッケージのほかに、commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph.jar,morph-1.0.1.jar
次に例コードを示します.
				// JSON  
				JSONObject jsonObj = JSONObject.fromObject(jsonStrBody);
				
				Map classMap = new HashMap();
	            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_Baidu weather = (WeatherBean_Baidu) JSONObject.toBean(jsonObj,  
	            		WeatherBean_Baidu.class, classMap); 
	            System.out.println(weather.getResults());

使用されるJAVAクラスのコード:
package com.lenovo.conference.entity.vo;

import java.io.Serializable;
import java.util.List;

/**
 *   Bean
 * 
 * @author SHANHY
 * 
 */
@SuppressWarnings("serial")
public class WeatherBean_Baidu implements Serializable {

	private String error;//   
	private String status;//   
	private String date;//  
	private List results;//        (            )

	public WeatherBean_Baidu() {
		super();
	}

	public String getError() {
		return error;
	}

	public void setError(String error) {
		this.error = error;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getDate() {
		return date;
	}

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

	public List getResults() {
		return results;
	}

	public void setResults(List results) {
		this.results = results;
	}

}
package com.lenovo.conference.entity.vo;

import java.io.Serializable;
import java.util.List;

/**
 *   Bean
 * 
 * @author SHANHY
 * 
 */
@SuppressWarnings("serial")
public class WeatherBean_Baidu_City implements Serializable {

	private String currentCity;//    
	private String pm25;//pm2.5 
	private List index;//    
	private List weather_data;//       

	public WeatherBean_Baidu_City() {
		super();
	}

	public String getCurrentCity() {
		return currentCity;
	}

	public void setCurrentCity(String currentCity) {
		this.currentCity = currentCity;
	}

	public String getPm25() {
		return pm25;
	}

	public void setPm25(String pm25) {
		this.pm25 = pm25;
	}

	public List getIndex() {
		return index;
	}

	public void setIndex(List index) {
		this.index = index;
	}

	public List getWeather_data() {
		return weather_data;
	}

	public void setWeather_data(
			List weather_data) {
		this.weather_data = weather_data;
	}

}
package com.lenovo.conference.entity.vo;

import java.io.Serializable;

/**
 *   Bean
 * 
 * @author SHANHY
 * 
 */
@SuppressWarnings("serial")
public class WeatherBean_Baidu_City_Weatherdata implements Serializable {

	private String date;//   
	private String dayPictureUrl;//        
	private String nightPictureUrl;//        
	private String weather;//   
	private String wind;//   
	private String temperature;//   

	public WeatherBean_Baidu_City_Weatherdata() {
		super();
	}

	public String getDate() {
		return date;
	}

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

	public String getDayPictureUrl() {
		return dayPictureUrl;
	}

	public void setDayPictureUrl(String dayPictureUrl) {
		this.dayPictureUrl = dayPictureUrl;
	}

	public String getNightPictureUrl() {
		return nightPictureUrl;
	}

	public void setNightPictureUrl(String nightPictureUrl) {
		this.nightPictureUrl = nightPictureUrl;
	}

	public String getWeather() {
		return weather;
	}

	public void setWeather(String weather) {
		this.weather = weather;
	}

	public String getWind() {
		return wind;
	}

	public void setWind(String wind) {
		this.wind = wind;
	}

	public String getTemperature() {
		return temperature;
	}

	public void setTemperature(String temperature) {
		this.temperature = temperature;
	}

}
package com.lenovo.conference.entity.vo;

import java.io.Serializable;

/**
 *   Bean
 * 
 * @author SHANHY
 * 
 */
@SuppressWarnings("serial")
public class WeatherBean_Baidu_City_Index implements Serializable {

	private String title;//  
	private String zs;//   
	private String tipt;//    
	private String des;//    

	public WeatherBean_Baidu_City_Index() {
		super();
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getZs() {
		return zs;
	}

	public void setZs(String zs) {
		this.zs = zs;
	}

	public String getTipt() {
		return tipt;
	}

	public void setTipt(String tipt) {
		this.tipt = tipt;
	}

	public String getDes() {
		return des;
	}

	public void setDes(String des) {
		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℃"}]}]}