SpringBoot通过 JsonSerializer实现自定义序列化

介绍

  JsonSerializer 是 Jackson 库中的一个类,用于自定义 Java 对象到 JSON 字符串的序列化过程。在使用 Jackson 进行对象序列化时,有时候需要对某些特定类型的字段进行定制化的序列化处理,这时就可以使用 JsonSerializer 来实现自定义的序列化逻辑。

使用

继承JsonSerializer<T>

复制代码
package com.ybchen.seria;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.apache.commons.lang3.StringUtils;

import java.io.IOException;

/**
 * @description: 图片序列化
 * @author: alex
 * @create: 2024-05-05 21:10
 */
public class PictureJsonSerializer extends JsonSerializer<String> {
    @Override
    public void serialize(String str, JsonGenerator gen, SerializerProvider serializerProvider) throws IOException {
        if (StringUtils.isNotEmpty(str)){
            //转换图片加签
            gen.writeString(str+"xxx.jpg");
        }
    }
}
复制代码

VO上添加注解:@JsonSerialize(using = PictureJsonSerializer.class)

复制代码
package com.ybchen.vo;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.ybchen.seria.PictureJsonSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * @description:
 * @author: alex
 * @create: 2024-05-05 21:15
 */
@Data
public class ImageVO {
    @ApiModelProperty("主键id")
    private Integer id;

    @ApiModelProperty("图片")
    @JsonSerialize(using = PictureJsonSerializer.class)
    private String image;

    @ApiModelProperty("图片列表")
    private List<String> imageList=new ArrayList<>();
}
复制代码

处理非空的情况,也进入JsonSerializer

 

 @JsonSerialize(using = xxxx.class,nullsUsing=xxxx.class)
    private String image;

 

posted @   陈彦斌  阅读(345)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
历史上的今天:
2020-11-04 微服务核心基础知识
点击右上角即可分享
微信分享提示