背景描述
前端要求返回的对象为null时,对每个数据的解析要做判断,方便前端开发需要将null转换为{}
即
{
"data":null
}
处理为
{
"data":{}
}
解决方法
step 1 创建null值序列化处理类
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException;
/**
* 使用方法: @JsonSerialize(nullsUsing = NullObjectToEmptyObjectSerializer.class)
* 效果: null对象会被转换为空对象 {}
* 请务必使用nullsUsing 表示仅当值为null时, 才会进入本类 serialize 方法
*/
public class NullObjectToEmptyObjectSerializer extends JsonSerializer<Object> {
@Override
public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
//创建空对象节点 效果为{}
ObjectNode objectNode = objectMapper.createObjectNode();
//如果处理的字段为数组,则需要创建数组节点 []
//ArrayNode arrayNode = objectMapper.createArrayNode();
jsonGenerator.writeObject(objectNode);
}
}
step 2 给需要转换的字段加上注解
@JsonSerialize(nullsUsing = NullObjectToEmptyObjectSerializer.class)
private Object data;