복붙노트

[SPRING] @ResponseBody 주석을 사용할 때의 빈 문자열로서의 널 값

SPRING

@ResponseBody 주석을 사용할 때의 빈 문자열로서의 널 값

@ResponseBody annotation을 사용하여 null 값을 빈 문자열에 매핑하는 방법이 있습니까?

해결법

  1. ==============================

    1.좋은 예가 여기에 있습니다 - http://wiki.fasterxml.com/JacksonHowToCustomSerializers (null 값을 사용할 수있는 빈 문자열로 변환하는 구체적인 예가 있습니다)

    좋은 예가 여기에 있습니다 - http://wiki.fasterxml.com/JacksonHowToCustomSerializers (null 값을 사용할 수있는 빈 문자열로 변환하는 구체적인 예가 있습니다)

    다음은 Jackson (<2.0)의 모든 단계입니다.

    사용자 지정 null Serializer 작성 :

    import java.io.IOException;
    
    import org.codehaus.jackson.JsonGenerator;
    import org.codehaus.jackson.JsonProcessingException;
    import org.codehaus.jackson.map.JsonSerializer;
    import org.codehaus.jackson.map.SerializerProvider;
    
    public class NullSerializer extends JsonSerializer<Object> {
    
        @Override
        public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
            jgen.writeString("");
        }
    }
    

    Jackson Objectmapper에 등록하십시오.

    import org.codehaus.jackson.map.ObjectMapper;
    import org.codehaus.jackson.map.ser.StdSerializerProvider;
    
    
    public class CustomObjectMapper extends ObjectMapper{
        public CustomObjectMapper(){
            StdSerializerProvider sp = new StdSerializerProvider();
            sp.setNullValueSerializer(new NullSerializer());
            this.setSerializerProvider(sp);
        }
    
    }
    

    이 objectmapper를 Spring MVC에 등록하십시오 :

    <mvc:annotation-driven> 
       <mvc:message-converters register-defaults="true">
           <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
               <property name="objectMapper">
                   <bean class="CustomObjectMapper"/>
               </property>
           </bean>
       </mvc:message-converters>
    </mvc:annotation-driven>
    
  2. from https://stackoverflow.com/questions/12934045/null-values-as-empty-strings-when-using-responsebody-annotation by cc-by-sa and MIT license