Spring Boot 定制Jackson输出,替换String

2017-07-06  本文已影响0人  随便写点文章

/**

* @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();

}

}
上一篇 下一篇

猜你喜欢

热点阅读