Jackson 中如何将 null 转化为空字符串

Last Modified: 2024/01/04

概述

在与一些第三方系统对接时,可能会遇到需要将 null 值转化为空字符串的需求。在 Jackson 中,可以通过自定义序列化器来实现这样的需求。不过 1.x 中的做法和 2.x 中的做法略有不同。

Jackson 2.x null 转化为空字符串

首先自定义一个针对 null 值的序列化器

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;

public class NullValueSerializer extends JsonSerializer<Object> {
    @Override
    public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeString("");
    }
}

将上面的序列化器应用到 ObjectMapper 对象上。需要注意的是在 Jackson 2.x 中,需要使用 DefaultSerializerProvider 代替 1.x 中 StdSerializerProvider。

ObjectMapper mapper = new ObjectMapper();
DefaultSerializerProvider provider = new DefaultSerializerProvider.Impl();
provider.setNullValueSerializer(new NullValueSerializer());
mapper.setSerializerProvider(provider);

Jackson 1.x null 转化为空字符串

StdSerializerProvider sp = new StdSerializerProvider();
sp.setNullValueSerializer(new NullValueSerializer());
ObjectMapper m = new ObjectMapper();
m.setSerializerProvider(sp);
有问题吗?点此反馈!

温馨提示:反馈需要登录