com.alibaba.fastjson.JSON對類對象的序列化與反序列化

一、目標


把類的對象存儲到字符串可存儲

二、類定義


public interface JsonInterface {
	import com.alibaba.fastjson.JSON;
	import lombok.Getter;
	import lombok.Setter;
	@Setter
	@Getter
	public class JsonVo implements JsonInterface {
		private String id;
		private String name;
		public JsonVo(String id, String name) {
			super();
			this.id = id;
			this.name = name;
		}
		@Override
		    public String toString() {
			return String.format("id:%s   ||||  name:%s", id, name);
		}
	}
}

三、測試


public void test() {
	JsonInterface tmp = new JsonVo("id1", "name1");
	String json = JSON.toJSONString(tmp);
	System.out.println(json);
	JsonInterface jsonVo = JSON.parseObject(json, JsonVo.class);
	System.out.println(jsonVo);
	System.out.println("--------");
	byte[] bytes = JSON.toJSONBytes(tmp);
	System.out.println(bytes);
	JsonInterface jsonVo2 = JSON.parseObject(bytes, JsonVo.class);
	System.out.println(jsonVo2);
}

結果

{
	"id":"id1","name":"name1"
}
id:id1   ||||  name:name1
--------
[[email protected]
id:id1   ||||  name:name1

四、Fastjson


Fastjson是一個Java語言編寫的高性能功能完善的JSON庫。它採用一種「假定有序快速匹配」的算法,把JSON Parse的性能提升到極致,是目前Java語言中最快的JSON庫。Fastjson接口簡單易用,已經被廣泛使用在緩存序列化、協議交互、Web輸出、Android客戶端等多種應用場景

五、TypeReference


例1

public void test2() {
	List<Integer> list = new ArrayList<>();
	list.add(1);
	list.add(9);
	list.add(4);
	list.add(8);
	JSONObject jsonObj = new JSONObject();
	jsonObj.put("a", list);
	System.out.println(jsonObj);
	List<String> list2 = jsonObj.getObject("a", new TypeReference<List<Integer>>(){
	}
	);
	System.out.println(list2);
}

結果

{"a":[1,9,4,8]}
[1, 9, 4, 8]

例2

public void test3() {
	List<JsonVo> list = new ArrayList<>();
	list.add(new JsonVo("id1", "name1"));
	list.add(new JsonVo("id2", "name2"));
	list.add(new JsonVo("id3", "name3"));
	JSONObject jsonObj = new JSONObject();
	jsonObj.put("a", list);
	System.out.println(jsonObj);
	List<String> list2 = jsonObj.getObject("a", new TypeReference<List<JsonVo>>(){
	}
	);
	System.out.println(list2);
}

結果

{"a":[{"id":"id1","name":"name1"},{"id":"id2","name":"name2"},{"id":"id3","name":"name3"}]}
[id:id1   ||||  name:name1, id:id2   ||||  name:name2, id:id3   ||||  name:name3]

讀者福利:


分享免費學習資料

針對於Java程序員,我這邊準備免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)

爲什麼某些人會一直比你優秀,是因爲他本身就很優秀還一直在持續努力變得更優秀,而你是不是還在滿足於現狀內心在竊喜!希望讀到這的您能點個小贊和關注下我,以後還會更新技術乾貨,謝謝您的支持!

資料領取方式:加入Java技術交流羣963944895,私信管理員即可免費領取