今天试着把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>
参考: