解决方法和网上的 不太一样 因为SerializerProvider 为StdSerializerProvider的父类,直接从SerializerProvider .setNullValueSerializer()方法 不允许 所以通过子类StdSerializerProvider调用此方法
applicationContext.xml
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
text/plain;charset=UTF-8
application/json;charset=UTF-8
ObjectMappingCustomer.java
packagecom.interceptor;
importjava.io.IOException;
importorg.codehaus.jackson.JsonGenerator;
importorg.codehaus.jackson.JsonParser;
importorg.codehaus.jackson.JsonProcessingException;
importorg.codehaus.jackson.map.JsonSerializer;
importorg.codehaus.jackson.map.ObjectMapper;
importorg.codehaus.jackson.map.SerializerProvider;
importorg.codehaus.jackson.map.ser.StdSerializerProvider;
publicclassObjectMappingCustomerextendsObjectMapper
{
publicObjectMappingCustomer()
{
super();
//允许单引号
this.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES,true);
//字段和值都加引号
this.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES,true);
//数字也加引号
this.configure(JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS,true);
this.configure(JsonGenerator.Feature.QUOTE_NON_NUMERIC_NUMBERS,true);
//空值处理为空串
StdSerializerProvidersp=(StdSerializerProvider)this.getSerializerProvider();
sp.setNullValueSerializer(newJsonSerializer(){
@Override
publicvoidserialize(Objectvalue,JsonGeneratorjg,
SerializerProvidersp)throwsIOException,
JsonProcessingException{
jg.writeString("");
}
});
}
}
然后在springmvc controller里加 @ResponseBody注解就可以了
需要jackson-all.jar