FastJson阿里巴巴开源的轻量级Json框架,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。
添加依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.66</version>
</dependency>
序列化,将对象,list,map转化为String类型的json字符串
1.JSON.toJSONString
// JSON.toJSONString可以将java对象(user)转化为String类型的json字符串
User user = new User(1,"张三",18,"江苏");
String s = JSON.toJSONString(user);
System.out.println(s);
//将list集合转化为String类型的json字符串,也是调用JSON.toJSONString
List<User> list = new ArrayList<>();
list.add(new User(1,"张三",18,"徐州"));
list.add(new User(2,"李四",19,"徐州"));
String s = JSON.toJSONString(list);
System.out.println(s);
//将map转化为String类型的json字符串,也是调用JSON.toJSONString
HashMap<String, User> userMap = new HashMap<>();
userMap.put("user1",new User(1,"张三",18,"徐州"));
userMap.put("user2",new User(2,"李四",19,"徐州"));
String s1 = JSON.toJSONString(userMap);

反序列化,将json格式的字符串转化为对象,list或map
JSON.parseObject
// JSON.parseObject可以将String类型的json字符串转化为java对象(user)
User user = new User(1,"张三",18,"江苏");
//将user对象转化为json格式的字符串
String s2 = JSON.toJSONString(user);
//再将json的字符串转化为user对象
User user1 = JSON.parseObject(s2, User.class);
System.out.println(user1);
JSON.parseArray
可以将String类型的Json字符串转化为list集合
List<User> list = new ArrayList<>();
list.add(new User(1,"张三",18,"徐州"));
list.add(new User(2,"李四",19,"徐州"));
String s = JSON.toJSONString(list);
List<User> objects = JSON.parseArray(s, User.class);
System.out.println(objects);
map的反序列化,比较特殊,虽然也调用 JSON.parseObject这个方法,但是还是有点小区别的,具体看代码
HashMap<String, User> userMap = new HashMap<>();
userMap.put("user1",new User(1,"张三",18,"徐州"));
userMap.put("user2",new User(2,"李四",19,"徐州"));
String s1 = JSON.toJSONString(userMap);
//因为map的特殊性,再调用JSON.parseObject时,第二个参数要这么传,new TypeReference<Map<String, User>>() {}
Map<String, User> stringUserMap = JSON.parseObject(s1, new TypeReference<Map<String, User>>() {});
System.out.println(stringUserMap);

@JSONField注解使用
name:指序列化的时候指定属性名,name变成studentName
format:指Date类型 序列化的时候指定日期类型的格式
ordinal:规定字段的顺序
serialize/deserialize:指定字段不序列化
//name:指序列化的时候指定属性名,name变成studentName
@JSONField(name = "studentName")
public String name;
//format:指序列化的时候指定日期类型的格式
@JSONField(format = "yyyy-MM-dd",ordinal = 1,serialize = false)
private Date birthday;
"user1":{"address":"徐州","age":18,"birthday":"2021-10-28","id":1,"studentName":"张三"}
本文详细介绍了阿里巴巴的FastJson框架,用于Java对象与JSON字符串之间的转换。通过示例展示了如何使用JSON.toJSONString进行序列化,将User对象、List<User>集合和Map<String, User>转化为JSON字符串,以及如何利用JSON.parseObject和JSON.parseArray进行反序列化,将JSON字符串还原为Java对象和集合。同时,还提到了@JSONField注解的使用,包括name、format、ordinal和serialize/deserialize属性,帮助自定义序列化过程。
284

被折叠的 条评论
为什么被折叠?



