美文网首页
Spring Boot 定制Jackson输出,替换String

Spring Boot 定制Jackson输出,替换String

作者: 随便写点文章 | 来源:发表于2017-07-06 10:46 被阅读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();

}

}

相关文章

网友评论

      本文标题:Spring Boot 定制Jackson输出,替换String

      本文链接:https://www.haomeiwen.com/subject/jpchhxtx.html