在没有学习fastjson前,不知道JSON和GSON的区别。
JSON来源:在JAVA中,我们的对象携带了数据,如果要把对象中的数据传输给前端,可以使用XML文件,但是XML文件烦琐而且速度慢,JSON可以完美取代XML文件。JSON是JAVAScript的子集,使用JSON自然更加快。
JSON本质:JSON本质是一种文本格式。可以理解成前后端传输数据的协议。
JSON文本组成:"{}" "[]" "," ":"一共六个字符,可以包括空格、回车。{}表示对象,[]表示对象组成的数组,","用来分隔对象,":"用来分隔键值对。
GSON:和JSON一字之差,但是概念完全不同。GSON全名为Goole JSON,使用JAVA编写的代码,功能是将JAVA对象转换成JSON格式文本(序列化)和将JSON格式文本转换成JAVA对象(反序列化)。一个功能可能有不同的代码产品,alibaba的fastjson和json就是同类竞品,fastjson据说要比GSON快6倍。
根据后端语言的使用,我们可以使用不同语言对应功能,比如将JSON格式文本转换成PHP对象,或者转换成其他语言对象。
来个fastjson的使用案例:
首先我们下载相应的jar包并配置classpath,然后我们新建bean
public class Group {
private Long id;
private String name;
private List<User> users = new ArrayList<User>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
public void addUser(User user) {
users.add(user);
}
@Override
public String toString() {
return "Group{" +
"id=" + id +
", name='" + name + '\'' +
", users=" + users +
'}';
}
}
public class User {
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
来个测试
public class Test {
public static void main(String[] args) {
//序列化
Group group = new Group();
group.setId(0L);
group.setName("admin");
User guestUser = new User();
guestUser.setId(2L);
guestUser.setName("guest");
User rootUser = new User();
rootUser.setId(3L);
rootUser.setName("root");
group.addUser(guestUser);
group.addUser(rootUser);
String jsonString = JSON.toJSONString(group);
System.out.println(jsonString);
//反序列化
//"{}"表示对象,"[]"表示对象数组(List),一定要有getter和setter。
String jsonString1 = "{\"id\":0,\"name\":\"admin\",\"users\":[{\"id\":2,\"name\":\"guest\"},{\"id\":3,\"name\":\"root\"}]}";
Group group1 = JSON.parseObject(jsonString1, Group.class);
System.out.println(group1.getUsers().get(0).toString());
System.out.println(group1.toString());
//处理时间
Date date = new Date(System.currentTimeMillis());
System.out.println(JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(JSON.toJSONString(date, SerializerFeature.UseISO8601DateFormat));
JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd";
System.out.println(JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat));
}
}