com.alibaba.fastjson.JSON对类对象的序列化与反序列化

com.alibaba.fastjson.JSON对类对象的序列化与反序列化_第1张图片

一、目标


把类的对象存储到字符串可存储

二、类定义


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
--------
[B@383534aa
id:id1   ||||  name:name1

四、Fastjson


Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景

五、TypeReference


例1

public void test2() {
	List 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 list2 = jsonObj.getObject("a", new TypeReference>(){
	}
	);
	System.out.println(list2);
}

结果

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

例2

public void test3() {
	List 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 list2 = jsonObj.getObject("a", new TypeReference>(){
	}
	);
	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,私信管理员即可免费领取

你可能感兴趣的:(Java)