JsonNullSerializer to send empty string instead of null value – Set them to “empty string”.
In this article, we’re going to look at a more advanced “use-case” of using Jackson to write a custom serializer.
Here are the steps (for Jackson < 2.0):
For Maven
<!– https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core –>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.4</version>
</dependency>
For Gradle
// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core
compile group: ‘com.fasterxml.jackson.core’, name: ‘jackson-core’, version: ‘2.9.4’
import java.io.IOException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
public class NullSerializer extends JsonSerializer<Object>
{
@Override
public void serialize(Object o, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, com.fasterxml.jackson.core.JsonProcessingException { jsonGenerator.writeString(“”);
}
}
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ser.DefaultSerializerProvider;
import com.XXX.NullSerializer;
public class CustomObjectMapper extends ObjectMapper
{
public CustomObjectMapper()
{
super();
DefaultSerializerProvider.Impl sp = new DefaultSerializerProvider.Impl();
sp.setNullValueSerializer(new NullSerializer());
this.setSerializerProvider(sp);
}
}
package com.sfl.is.mfn;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationConfig;
import com.XXX.CustomObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.actuate.autoconfigure.*;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import javax.annotation.PostConstruct;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Arrays;
import java.util.Collection;
@ComponentScan
@EnableAutoConfiguration(exclude = { MetricFilterAutoConfiguration.class, MetricRepositoryAutoConfiguration.class })
@EnableConfigurationProperties({ LiquibaseProperties.class, ApplicationProperties.class })
public class NullToEmptyApplication
{
private static final Logger log = LoggerFactory.getLogger(MindfullnessWebApiApp.class);
public NullToEmptyApplication()
{
}
public static void main(String[] args) throws UnknownHostException
{
SpringApplication app = new SpringApplication(NullToEmptyApplication.class);
}
@Bean
public ObjectMapper jacksonObjectMapper()
{
return new CustomObjectMapper();
}
@Bean
public SerializationConfig serializationConfig()
{
return jacksonObjectMapper()
.getSerializationConfig();
}
}
Two Microsoft-adjacent automation tools, two very different answers to…
Canvas Apps and Code Apps solve different problems on…
Power Apps and Power Pages are two tools of…
Most buyers never ask. They assume a company that…
No vendor pitch here, just the plain difference, so…