参考:Jackson序列化(7) —使用BeanSerializerModifier定义Jackson的序列化方式(对于null,String格式要返回"") - 简书
模块:blade-core-tool
类:BladeBeanSerializerModifier
在这个类中,对null的整型序列化为-1。
public interface NullJsonSerializers {
JsonSerializer<Object> STRING_JSON_SERIALIZER = new JsonSerializer<Object>() {
public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeString("");
}
};
JsonSerializer<Object> NUMBER_JSON_SERIALIZER = new JsonSerializer<Object>() {
public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeNumber(-1);
}
};
类:MappingApiJackson2HttpMessageConverter
这个类中,当“blade.jackson.nullToEmpty”为真时,序列化工厂指使用自定义的BladeBeanSerializerModifier。
private static ObjectMapper initWriteObjectMapper(ObjectMapper readObjectMapper, BladeJacksonProperties properties) {
ObjectMapper writeObjectMapper = readObjectMapper.copy();
if (Boolean.TRUE.equals(properties.getBigNumToString())) {
writeObjectMapper.registerModules(new Module[]{BladeNumberModule.INSTANCE});
}
if (Boolean.TRUE.equals(properties.getNullToEmpty())) {
writeObjectMapper.setSerializerFactory(writeObjectMapper.getSerializerFactory().withSerializerModifier(new BladeBeanSerializerModifier()));
writeObjectMapper.getSerializerProvider().setNullValueSerializer(NullJsonSerializers.STRING_JSON_SERIALIZER);
}
return writeObjectMapper;
}
类:BladeJacksonProperties
“blade.jackson.nullToEmpty”默认为真。
@ConfigurationProperties("blade.jackson")
public class BladeJacksonProperties {
private Boolean nullToEmpty;
private Boolean bigNumToString;
private Boolean supportTextPlain;
public BladeJacksonProperties() {
this.nullToEmpty = Boolean.TRUE;
this.bigNumToString = Boolean.TRUE;
this.supportTextPlain = Boolean.FALSE;
}
所以,“blade.jackson.nullToEmpty”为配置为false就可以了。