目录

  • 1. 创建序列化类
  • 2. 创建反序列化类
  • 3. 实体类字段添加注解
  • 4. 反序列操作
  • 5. 序列化操作

1. 创建序列化类

  • 继承JsonSerializer或者StdSerializer,添加泛型
  • 自定义字符串序列化类,md5脱敏
package com.example.fisher.gradledemo.sysuser.entity;import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.springframework.util.DigestUtils;import java.io.IOException;public class StringJsonSerializer extends JsonSerializer<String> {@Overridepublic void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {if (value != null) {String s = DigestUtils.md5DigestAsHex(value.getBytes("UTF-8"));gen.writeString(s);}}
}
  • 自定义日期序列化类,转时间戳
package com.example.fisher.gradledemo.sysuser.entity;import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;public class LocalDateTime2Long extends StdSerializer<LocalDateTime> {public LocalDateTime2Long() {super(LocalDateTime.class);}@Overridepublic void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider provider) throws IOException {Long epochSecond = value.toEpochSecond(ZoneOffset.ofHours(8));gen.writeObject(epochSecond);}
}

2. 创建反序列化类

  • 继承JsonDeserializer
package com.example.fisher.gradledemo.sysuser.entity;import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;import java.io.IOException;public class AgeDeserializer extends JsonDeserializer<Integer> {@Overridepublic Integer deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {int intValue = p.getIntValue();return intValue * 10;}
}

3. 实体类字段添加注解

  • 序列化@JsonSerialize,反序列化@JsonDeserialize
package com.example.fisher.gradledemo.sysuser.entity;import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;import java.io.Serializable;
import java.time.LocalDateTime;@SuppressWarnings("serial")
@Data
public class SysUser extends Model<SysUser> {@TableId(type = IdType.AUTO)private Long userId;@JsonSerialize(using = LocalDateTime2Long.class)@TableField(fill = FieldFill.INSERT)private LocalDateTime createTime;@TableField(fill = FieldFill.UPDATE)private LocalDateTime updateTime;@TableLogic@JsonIgnoreprivate Integer delFlag;@JsonSerialize(using = StringJsonSerializer.class)private String name;@JsonDeserialize(using = AgeDeserializer.class)private Integer age;private String interest;/*** 获取主键值** @return 主键值*/@Overridepublic Serializable pkVal() {return this.userId;}
}

4. 反序列操作

  • 年龄10反序列化为100

5. 序列化操作

  • 名字被md5处理,创建时间转时间戳

Jackson 自定义序列化和反序列化相关推荐

  1. jackson多态序列化与反序列化

    前几天遇到个问题,场景大概是 list 中既有父类又有子类,在反序列化时丢掉了子类的信息.解决这个问题也没花多少时间,不过还是打算记录下.参考链接如下: Jackson JSON - Using @J ...

  2. 自定义序列化和反序列化的java实现

    2019独角兽企业重金招聘Python工程师标准>>> package j2se.IO;import java.io.*;/*** Created by jingqing.zhou ...

  3. C#自定义序列化反序列化与 ISerializable 接口

    ISerializable 接口 MSDN注解:允许对象控制其自己的序列化和反序列化过程. ISerializable 接口的定义: public interface ISerializable {v ...

  4. hutol json null值没了_JSON数据处理框架Jackson精解第一篇-序列化与反序列化核心用法...

    Jackson是Spring Boot默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的,没有这种限制.它提供了很 ...

  5. 序列化 自定义名字_反序列化漏洞(Web漏洞及防御)

    为了有效地存储或传递数据,同时不丢失其类型和结构,经常需要利用序列化和反序列化函数对数据进行处理! 序列化 将对象或数据转换为可以恢复的数据格式的过程 什么时候需要序列化? 1)对象在网络上传输时 2 ...

  6. Java基础-序列化与反序列化

    序列化和反序列化在面试中也经常考查,下面就总结一下 Java 中的序列化和反序列化. 什么是序列化和反序列化? 序列化是将 Java 对象转换成与平台无关的二进制流,而反序列化则是将二进制流恢复成原来 ...

  7. java-Transient关键字、Volatile关键字介绍和序列化、反序列化机制、单例类序列化

    - Transient关键字 Java的serialization提供了一种持久化对象实例的机制.当持久化对象时,可能有一个特殊的对象数据成员,我们不想  用serialization机制来保存它.为 ...

  8. 深入Atlas系列:探究序列化与反序列化能力(下) - JavaScriptSerializer

    在ASP.NET AJAX中,客户端的序列化与反序列能力由Sys.Serialization.JavaScriptSerializer类的serialize和deserialize两个静态方法提供.在 ...

  9. java序列化与反序列化总结

    很多商业项目用到数据库.内存映射文件和普通文件来完成项目中的序列化处理的需求,但是这些方法很少会依靠于Java序列化.本文也不是用来解释序列化的,而是一起来看看面试中有关序列化的问题,这些问题你很有可 ...

最新文章

  1. 批量将中文单个字音频转为图像(二维矩阵)
  2. Day10-Python3基础-协程、异步IO、redis缓存、rabbitMQ队列
  3. 神策数据荣获“金猿奖 - 2017 金融科技优秀产品奖”
  4. ClassLoader.getResourceAsStream(name);获取配置文件的方法
  5. 查看linux电脑内存free命令,Linux free命令查看内存状态
  6. 超级卡特兰数(bzoj 4706: B君的多边形)
  7. 【前端】设置好CSS样式动态添加元素会按照样式显示
  8. 二叉树的存储结构入门(java描述)
  9. 【转】给网站添加X-UA-Compatible标签
  10. dir_recurse是 php函数,php关于url、文件、目录、ip的相关问题汇总
  11. 基于VS2015的C#的GDAl环境配置
  12. 看完这篇文章你就清楚的知道 ZooKeeper的 概念了
  13. 游戏辅助原理与制作02-植物大战僵尸03-冷却时间基址
  14. 遥感图像处理:最小噪声分离变换(Minimum Noise Fraction Rotation,MNF Rotation)
  15. ASP.NET内置的6种验证控件的使用
  16. 五招教你做好企业年终绩效考核,太实用了!
  17. CMTime,CMTimeMake CMTimeMakeWithSeconds
  18. 基于Django的论坛系统项目
  19. 推荐一款免费的文件夹加密软件 Free Encrypt Folder 加密耗子
  20. python中calendar模块_python calendar模块

热门文章

  1. 机器学习如何借鉴人类的视觉识别学习?让我们从婴幼儿的视觉学习说起
  2. 人工智能chatgpt的国内的稳定镜像
  3. [转载]点评阿里云、盛大云等国内IaaS产业
  4. 开源协议是否可以商用
  5. 2021级天梯赛 2.1-2.4
  6. 怎么样才能学好数学?
  7. UDDI和WSDL的关系
  8. spring boot接入微信小程序支付流程
  9. 同一 等价和自然数的生成:皮亚诺公理3解读——皮亚诺读后之五
  10. FFmpeg笔记(四)