最初の方法:
@JsonInclude(JsonInclude.Include.NON_NULL)
このアノテーションを、エンティティクラスに対応するオブジェクト名またはクラス名に追加します。
Include.ALWAYS属性はシリアル化されます
。Include.NON_DEFAULT属性はデフォルト値です。シリアル化されていません
。Include.NON_EMPTY属性は空( "")またはNULLです
。Include.NON_NULL属性はNULLです。シリアル化されていません。
といった:
private Integer id;
@JsonInclude(JsonInclude.Include.NON_NULL)
private String resourceName;
このとき、resourceNameがnullの場合、属性は表示されません。
このメソッドの欠点は、空の場合、プロパティ全体が失われることです。これは、nullを ""に変換する方法について説明しています。
2番目の方法:オブジェクトマッパーをカスタマイズする
import java.io.IOException;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
/**
* null返回空字符串
*/
@Configuration
public class JacksonConfig {
@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
ObjectMapper objectMapper = builder.createXmlMapper(false).build();
SerializerProvider serializerProvider = objectMapper.getSerializerProvider();
serializerProvider.setNullValueSerializer(new JsonSerializer<Object>() {
@Override
public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
jsonGenerator.writeString("");
}
});
return objectMapper;
}
}
このメソッドは、リスト、マップ、および列挙型がnullの場合、オブジェクトを空の文字列に変換することに注意してください。これは欠点です。必要に応じて使用してください。
3番目の方法:属性のデフォルト値を直接設定する
エンティティクラスを初期化するときにプロパティのデフォルト値を設定することです
といった:
private String name="";