SpringMVC与fastjson整合并同时解决中文乱码问题

SpringMVC与fastjson整合并同时解决中文乱码问题

原文地址:http://xyly624.blog.51cto.com/842520/896704

作者:gdonline

标签:SpringMVCjsonFastJSON

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://xyly624.blog.51cto.com/842520/896704

今天试着把SpringMVC与fastjson整合了下,经测试也能解决json含中文乱码的问题,特此分享之。我也是初用,详细文档请见官网。

转换类:

public class MappingFastJsonHttpMessageConverter extends 
        AbstractHttpMessageConverter<Object> { 
    public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); 
 
    private SerializerFeature[] serializerFeature; 
 
    public SerializerFeature[] getSerializerFeature() { 
        return serializerFeature; 
    } 
 
    public void setSerializerFeature(SerializerFeature[] serializerFeature) { 
        this.serializerFeature = serializerFeature; 
    } 
 
    public MappingFastJsonHttpMessageConverter() { 
        super(new MediaType("application", "json", DEFAULT_CHARSET)); 
    } 
 
    @Override 
    public boolean canRead(Class<?> clazz, MediaType mediaType) { 
        return true; 
    } 
 
    @Override 
    public boolean canWrite(Class<?> clazz, MediaType mediaType) { 
        return true; 
    } 
 
    @Override 
    protected boolean supports(Class<?> clazz) { 
        throw new UnsupportedOperationException(); 
    } 
 
    @Override 
    protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage) 
    throws IOException, HttpMessageNotReadableException { 
        ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
        int i; 
        while ((i = inputMessage.getBody().read()) != -1) { 
            baos.write(i); 
        } 
        return JSON.parseArray(baos.toString(), clazz); 
    } 
 
    @Override 
    protected void writeInternal(Object o, HttpOutputMessage outputMessage) 
    throws IOException, HttpMessageNotWritableException { 
        String jsonString = JSON.toJSONString(o, serializerFeature); 
        OutputStream out = outputMessage.getBody(); 
        out.write(jsonString.getBytes(DEFAULT_CHARSET)); 
        out.flush(); 
    } 
}

SpringMVC关键配置:

<mvc:annotation-driven> 
    <mvc:message-converters register-defaults="true">        
        <!-- fastjosn spring support --> 
        <bean id="jsonConverter" class="com.alibaba.fastjson.spring.support.MappingFastJsonHttpMessageConverter"> 
            <property name="supportedMediaTypes" value="application/json" /> 
            <property name="serializerFeature"> 
                <list> 
                    <value>WriteMapNullValue</value> 
                    <value>QuoteFieldNames</value> 
                </list> 
            </property> 
        </bean> 
    </mvc:message-converters> 
</mvc:annotation-driven>

参考:OSChinaFastJSON官网

相关推荐