马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
FastJson
引入依赖
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- <version>1.2.47</version>
- </dependency>
复制代码 序列化
使用的实体类和同一结果类在文章末了
- @Test
- void contextLoads() {
- User user = new User();
- String[] hobbies = {"sing","dance","rap"};
- user.setId(1L);
- user.setUsername("kunkun");
- user.setAge(22);
- user.setHobbies(hobbies);
- user.setRegisterDate(new Date());
- user.setBirthday(LocalDateTime.now());
- String toJSONString = JSON.toJSONString(user);
- System.out.println(toJSONString);
- }
复制代码 末了输出结果为:
{“age”:22,“birthday”:1723649279811,“hobbies”:[“sing”,“dance”,“rap”],“registerDate”:1723649279811,“username”:“kunkun”}
- 对null值的处置惩罚
fastjson默认会将值为null的数据留空,假如想要对没有值的数据赋为null时可以添加一个参数
- //对于对象中包含null值时
- String toJSONString = JSON.toJSONString(user, SerializerFeature.WriteMapNullValue);
复制代码- //对实体类修改
- //fastjson序列化日期格式
- @JSONField(format = "yyyy-MM-dd HH:mm:ss")
- private Date registerDate;
- @JSONField(format = "yyyy-MM-dd HH:mm:ss")
- private LocalDateTime birthday;
复制代码- @Test
- void Test$Ref() {
- ArrayList<User> userList = new ArrayList<>();
- User user = new User();
- user.setId(1L);
- user.setUsername("zhangsan");
- user.setAge(22);
- userList.add(user);
- userList.add(user);
- userList.add(user);
- //直接打印输出结果为:[{"age":22,"id":1,"username":"zhangsan"},{"$ref":"$[0]"},{"$ref":"$[0]"}]
- //String json = JSON.toJSONString(userList);
- //禁用引用探测功能
- String json = JSON.toJSONString(userList,SerializerFeature.DisableCircularReferenceDetect);
- //会发现结果变为正常
- System.out.println(json);
- }
复制代码 对于SerializerFilter定制处置惩罚,等用到再学
反序列化
- @Test
- void FastJsonSerializerFilter(){
- String json = "{"age":22,"birthday":"2024-08-14 23:36:47","hobbies":["sing","dance","rap"],"id":null,"registerDate":"2024-08-14 23:36:47","username":"kunkun"}";
- //反序列化为user对象
- User user = JSON.parseObject(json, User.class);
- //User(id=null, username=kunkun, age=22, hobbies=[sing, dance, rap], registerDate=Wed Aug 14 23:36:47 CST 2024, birthday=2024-08-14T23:36:47)
- System.out.println(user);
- }
复制代码
- 碰到泛型,的办理方式
例如同一给调用端返回Result类,而且Result中接纳了泛型data
- String resultJson = "{"code":200,"data":{"age":22,"birthday":"2024-08-14 23:56:34","hobbies":["sing","dance","rap"],"id":null,"registerDate":"2024-08-14 23:56:34","username":"kunkun"},"msg":"null"}\n";
- Result result = JSON.parseObject(resultJson, Result.class);
- //再进行反序列化时,默认只能返回Object类型,需要进行强制类型转换
- Object data = result.getData();
- //可以使用TypeReference
- Result<User> o = JSON.parseObject(resultJson, new TypeReference<Result<User>>() {
- });
- User data1 = o.getData();
复制代码 通用设置
写上在序列化或反序列化时都访问效- //指定属性名和json字符串key的对应关系
- @JSONField( name = "address")
- private String addr;
- //不参与序列化,与反序列化
- @JSONField( serialize = fales , deserialize = false)
- private String password;
复制代码 使用到的类
- import com.alibaba.fastjson.annotation.JSONField;
- import lombok.Data;
- import java.time.LocalDateTime;
- import java.util.Date;
- @Data
- public class User {
- private Long id;
- private String username;
- private int age;
- private String[] hobbies;
- //fastjson序列化日期格式
- @JSONField(format = "yyyy-MM-dd HH:mm:ss")
- private Date registerDate;
- @JSONField(format = "yyyy-MM-dd HH:mm:ss")
- private LocalDateTime birthday;
- }
复制代码- package com.sst.result;
- import lombok.Data;
- @Data
- public class Result<T> {
- private int code;
- private String msg;
- private T data;
- public Result(int code, String msg, T t) {
- this.code = code;
- this.msg = msg;
- this.data = t;
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |