/**
* @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();
}
}
网友评论