3

@ResponseBody注釈を使用して null 値を空の文字列にマップする方法はありますか?

4

2 に答える 2

8

カスタム Jackson Serializer を作成する必要があります - 良い例はここにあります - http://wiki.fasterxml.com/JacksonHowToCustomSerializers (使用できる null 値を空の文字列に変換する方法の具体的な例があります)

すべての手順は次のとおりです(Jackson < 2.0の場合):

カスタム null シリアライザーを記述します。

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>
于 2012-10-17T12:55:16.467 に答える