import com.fasterxml.jackson.databind.BeanProperty; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializationConfig; import com.fasterxml.jackson.databind.ser.DefaultSerializerProvider; import com.fasterxml.jackson.databind.ser.SerializerFactory; /** * Created by huang on 6/23/16. */ public class CustomNullStringSerializerProvider extends DefaultSerializerProvider { public CustomNullStringSerializerProvider() { super(); } public CustomNullStringSerializerProvider(CustomNullStringSerializerProvider ssp, SerializationConfig config, SerializerFactory slf) { super(ssp, config, slf); } public DefaultSerializerProvider createInstance(SerializationConfig serializationConfig, SerializerFactory serializerFactory) { return new CustomNullStringSerializerProvider(this, serializationConfig, serializerFactory); } @Override public JsonSerializer<Object> findNullValueSerializer(BeanProperty property) throws JsonMappingException { if (property.getType().getRawClass().equals(String.class)) { return EmptyStringSerializer.INSTANCE; } else { return super.findNullValueSerializer(property); } } }
import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; /** * Created by huang on 6/23/16. */ public class EmptyStringSerializer extends JsonSerializer<Object> { public static final JsonSerializer<Object> INSTANCE = new EmptyStringSerializer(); private EmptyStringSerializer() { } public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeString(""); } }
使用
@Bean public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter(); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setSerializerProvider(new CustomNullStringSerializerProvider()); jsonConverter.setObjectMapper(objectMapper); return jsonConverter; }