2016-08-08 10 views
8

値を持つプロパティだけを返そうとしていますが、nullも返されています。Springコンフィグレーションを使用して、jsonの "null"または空のプロパティをグローバルに無視する方法

これを行うアノテーションがありますが(@JsonInclude(Include.NON_NULL))、すべての単一エンティティクラスでこれらが必要です。

これは私の質問です。これはSpringの設定を通じてグローバルに設定する方法はありますか? (XMLは避けてください)

EDIT:この質問は重複していると思われますが、私はそうは思わないと思います。ここでの本当の疑問は、他の質問では見つけられない、spring configを使って設定する方法です。

答えて

14

あなたは春のブートを使用している場合、これは同様に簡単です:

spring.jackson.serialization-inclusion=non_null 

ない場合は、そのようMappingJackson2HttpMessageConverterでObjectMapperを設定することができます。

@Configuration 
class WebMvcConfiguration extends WebMvcConfigurationSupport { 
    @Override 
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) { 
     for(HttpMessageConverter converter: converters) { 
      if(converter instanceof MappingJackson2HttpMessageConverter) { 
       ObjectMapper mapper = ((MappingJackson2HttpMessageConverter)converter).getObjectMapper() 
       mapper.setSerializationInclusion(Include.NON_NULL); 
      } 
     } 
    } 
} 
+11

新しいSpring Boot(1.5.2)で 'spring.jackson.default-property-inclusion = non_null'を使用する必要があるようです。 –

+0

XmlMapperで動作しない理由 – Suroj

3

あなたはJSONを生成するためのジャクソンObjectMapperを使用する場合は、この目的のために、次のカスタムObjectMapperを定義し、代わりにそれを使用することができます。

<bean id="jacksonObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper"> 
    <property name="serializationInclusion"> 
     <value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value> 
    </property> 
</bean> 
0

Abolfazl Hashemiさんへのプログラムの代替の答えは以下の通りです:

/** 
* Jackson configuration class. 
*/ 
@Configuration 
public class JacksonConfig { 

    @Bean 
    public ObjectMapper buildObjectMapper() { 
     return new ObjectMapper().setSerializationInclusion(Include.NON_NULL); 
    } 
} 

この方法で、あなたは基本的にObjectMapperたびに使用され、Springコンテナに言っている、非NULL値を持つ唯一のプロパティですマッピングに含めることができます。

関連する問題