Json解析之FastJson

版權聲明:轉載請註明出處 https://blog.csdn.net/heqiangflytosky/article/details/37659943

一、FastJson介紹

FastJson是阿里巴巴提供的一個Json處理工具包,具備極快的性能,超越任其它的Java Json parser。使用起來很是方便。

二、例程

首先下載fastjson-1.1.27-android.jar包並導入project中:

DataBean.java:css

package com.heqiang.testactivity;

public class DataBean{
    private String name;
    private String url;
    private String summary;
    private long id;
    public DataBean() {
    }
    
    public DataBean(long id, String name, String url, String summary) {
    	this.id = id;
    	this.name = name;
    	this.url = url;
    	this.summary = summary;
    }
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getSummary() {
        return summary;
    }
    public void setSummary(String summary) {
		this.summary = summary;
    }

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}
}

ResponseBean.java:html

package com.heqiang.testactivity;

public class ResponseBean {
	private int code;
	private String message;
	private Value value;

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public Value getValue() {
		return value;
	}

	public void setValue(Value value) {
		this.value = value;
	}

	public static class Value {
		private String data;
		private boolean flag;
		
		public Value() {
		}
		
		public Value(String data, boolean flag) {
			this.data = data;
			this.setFlag(flag);
		}

        public String getData() {
			return data;
		}

		public void setData(String data) {
			this.data = data;
		}

		public boolean isFlag() {
			return flag;
		}

		public void setFlag(boolean flag) {
			this.flag = flag;
		}
	}

}


解析函數:

private void testFastJson(){
		String data = "{\"code\":200,\"message\":\"\",\"value\":{\"flag\":true,\"data\":[{\"url\":\"http://www.baidu.com\",\"id\":1,\"name\":\"百度\",\"summary\":\"搜索引擎\"},{\"url\":\"http://www.sina.com\",\"id\":2,\"name\":\"新浪\",\"summary\":\"門戶站點\"},{\"url\":\"http://www.qq.com\",\"id\":3,\"name\":\"騰訊\",\"summary\":\"社交網絡\"},{\"url\":\"http://www.taobao.com\",\"id\":4,\"name\":\"淘寶\",\"summary\":\"購物站點\"}]}}";

		ResponseBean reponse = JSON.parseObject(data, ResponseBean.class);
		if(reponse != null && reponse.getCode() == 200 && reponse.getValue() != null 
				&& reponse.getValue().getData() != null){
			List<DataBean> list = JSON.parseArray(reponse.getValue().getData(), DataBean.class);
			for (DataBean dataBean : list) {
				Log.d("Test", "name = "+dataBean.getName()+", url = "+dataBean.getUrl()+", id = "
						+dataBean.getId()+", summary = "+dataBean.getSummary());
			}
		}
	}

程序執行後打印例如如下:

name = 百度, url = http://www.baidu.com, id = 1, summary = 搜索引擎
name = 新浪, url = http://www.sina.com, id = 2, summary = 門戶站點
name = 騰訊, url = http://www.qq.com, id = 3, summary = 社交網絡
name = 淘寶, url = http://www.taobao.com, id = 4, summary = 購物站點

三、Bean的命名規則

Bean中相應的set必須和Json中的字段相應。比方Json中有id字段。get方法名應該爲setId。必須是set+字段名,字段名忽略大寫和小寫,假設字段是類似的is_default,那麼set方法名應爲setIs_default。下劃線不能省略java

四、注意事項

有一次在項目中用的時候遇到一個小插曲,不管怎麼樣解析出來的ResponseBean都沒有數據。後來才發現是默認作了代碼混淆的緣故。在proguard.flags設置對該類不作代碼混淆就可以了。android

五、Java對象轉Json

FastJson可以很是方便的把Java的一些實例轉化爲Json字符串:json

HashMap<String, String> map = new HashMap<String, String>();
		map.put("key1", "test1");
		map.put("key2", "test2");
		String json = JSON.toJSONString(map);
相關文章
相關標籤/搜索