解决方法和网上的 不太一样 因为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
package com.interceptor;
import java.io.IOException;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializerProvider;
import org.codehaus.jackson.map.ser.StdSerializerProvider;
public class ObjectMappingCustomer extends ObjectMapper
{
public ObjectMappingCustomer()
{
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);
// 空值处理为空串
StdSerializerProvider sp = (StdSerializerProvider) this.getSerializerProvider();
sp.setNullValueSerializer(new JsonSerializer(){
@Override
public void serialize(Object value, JsonGenerator jg,
SerializerProvider sp) throws IOException,
JsonProcessingException {
jg.writeString("");
}
});
}
}
然后在springmvc controller里加 @ResponseBody注解就可以了
需要jackson-all.jar