提示:使用场景
在开发中,有时候某些字段需要特殊处理,比如我们有一个日期字段,当日期为NULL时给前端不返回NULL而返回为其他等信息,就需要自定义字段的序列化。这就是@JsonSerialize的用处
1:先写一个指定的处理类
package org.demo.common.json;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.util.List;
/**
*
* @Description: 序列化工具,将list集合转字符串
* @Author: xqf
* @Date: 2023-11-25
* @Version: V1.0
* /
/**继承JsonSerializer*/
public class ToArraysSerializer extends JsonSerializer<String> {
/**
* 重写serialize方法
**/
@Override
public void serialize(String object, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
/**自定义处理方式*/
List<String> list = JSONObject.parseObject(object, List.class);
jsonGenerator.writeObject(list);
}
}
2:此字段上加上@JsonSerialize注解,并且使用using 属性(表示有值的时候调用ToArraysSerializer处理返回给前端)
/**
* 文章内容
*/
@ApiModelProperty(value = "文章内容")
@JsonSerialize(using = ToArraysSerializer.class)
private String content;
3:nullsUsing用法与using 一样,当字段为NULL时的自定义序列化方式
/**
* 文章内容
*/
@ApiModelProperty(value = "文章内容")
@JsonSerialize(nullsUsing = xxx.class)
private String content;