Spring Boot 定制Jackson输出,替换String null 为 empty String, 集合为[]


/**

* @author caijunhui

* @since 2017/5/25

*/

public classNullStringJsonSerializerextendsJsonSerializer{

public static finalNullStringJsonSerializerINSTANCE=newNullStringJsonSerializer();

@Override

public voidserialize(Objectvalue,JsonGeneratorgen,SerializerProviderserializers)throwsIOException{

if(value==null){

gen.writeString("");

}else{

gen.writeObject(value);

}

}

@Override

publicClasshandledType(){

returnObject.class;

}

}



/**

* @author caijunhui

* @since 2017/5/25

*/

public classNullArrayJsonSerializerextendsJsonSerializer{

public static finalNullArrayJsonSerializerINSTANCE=newNullArrayJsonSerializer();

@Override

public voidserialize(Objectvalue,JsonGeneratorgen,SerializerProviderserializers)throwsIOException{

if(value==null){

gen.writeStartArray();

gen.writeEndArray();

}else{

gen.writeObject(value);

}

}

@Override

publicClasshandledType(){

returnObject.class;

}

}



public classCustomSerializerProviderextendsDefaultSerializerProvider{

publicCustomSerializerProvider(){

super();

}

publicCustomSerializerProvider(SerializerProvidersrc,SerializationConfigconfig,SerializerFactoryf){

super(src,config,f);

}

@Override

publicDefaultSerializerProvidercreateInstance(SerializationConfigconfig,SerializerFactoryjsf){

return newCustomSerializerProvider(this,config,jsf);

}

@Override

publicJsonSerializerfindNullValueSerializer(BeanPropertyproperty)throwsJsonMappingException{

JavaTypetype=property.getType();

if(type.getRawClass().equals(String.class)){

returnNullStringJsonSerializer.INSTANCE;

}

if(type.isArrayType()||type.isCollectionLikeType()){

returnNullArrayJsonSerializer.INSTANCE;

}

return super.findNullValueSerializer(property);

}

}



public classCustomJackson2ObjectMapperBuilderextendsJackson2ObjectMapperBuilder{

publicCustomJackson2ObjectMapperBuilder(){

super();

}

@SuppressWarnings("unchecked")

@Override

publicTbuild(){

ObjectMapperobjectMapper=super.build();

objectMapper.setSerializerProvider(newCustomSerializerProvider());

return(T)objectMapper;

}

}



@Configuration

public classJacksonConfig{

@Bean

Jackson2ObjectMapperBuilderjackson2ObjectMapperBuilder(){

return newCustomJackson2ObjectMapperBuilder();

}

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容