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
,私信管理员即可免费领取