SpringMVC杂记(1) 使用阿里巴巴的fastjson
来源:互联网 发布:mac系统dwg文件查看器 编辑:程序博客网 时间:2024/05/16 02:45
1) 国产开源软件要支持的
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.1</version></dependency>
2) spring没有提供相应的HttpMessageConverter可以自己写一个。
package com.alibaba.fastjson.spring.support;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.OutputStream;import java.nio.charset.Charset;import org.springframework.http.HttpInputMessage;import org.springframework.http.HttpOutputMessage;import org.springframework.http.MediaType;import org.springframework.http.converter.AbstractHttpMessageConverter;import org.springframework.http.converter.HttpMessageNotReadableException;import org.springframework.http.converter.HttpMessageNotWritableException;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.serializer.SerializerFeature;public class MappingFastJsonHttpMessageConverter extends AbstractHttpMessageConverter<Object> { public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); // fastjson特性参数 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) { // JavaType javaType = getJavaType(clazz); // return this.objectMapper.canDeserialize(javaType) && // canRead(mediaType); return true; } @Override public boolean canWrite(Class<?> clazz, MediaType mediaType) { // return this.objectMapper.canSerialize(clazz) && canWrite(mediaType); return true; } @Override protected boolean supports(Class<?> clazz) { // should not be called, since we override canRead/Write instead 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(); }}
3) 配置
<mvc:annotation-driven> <mvc:message-converters register-defaults="true" > <bean class="com.alibaba.fastjson.spring.support.MappingFastJsonHttpMessageConverter"> <property name="supportedMediaTypes" value="application/json" /> <property name="serializerFeature"> <array> <value>WriteMapNullValue</value> <value>QuoteFieldNames</value> </array> </property> </bean> </mvc:message-converters></mvc:annotation-driven>
0 0
- SpringMVC杂记(1) 使用阿里巴巴的fastjson
- SpringMVC杂记(1) 使用阿里巴巴的fastjson
- 阿里巴巴fastjson的使用
- 阿里巴巴的fastjson使用分析
- Java编程:阿里巴巴的fastjson使用示例
- Json解析包 阿里巴巴 FastJson 的使用
- 阿里巴巴 - FastJson使用简介
- 阿里巴巴 - FastJson使用简介
- 阿里巴巴 - FastJson使用简介
- 阿里巴巴fastJson使用
- fastjson 阿里巴巴json使用
- 阿里巴巴的fastJson
- 阿里巴巴的fastjson
- 使用fastjson 替换springMvc默认的jackson
- Json的处理(阿里巴巴的fastjson)
- 阿里巴巴fastJson解析工具的demo实现
- 阿里巴巴FastJson对数据的常用操作
- FastJson-fastjson的简单使用
- Volley框架的学习总结(2)
- Unity协程(Coroutine)原理深入剖析再续
- [Django模板系统]用locals()传递变量到模板
- PHP - Rsa(秘钥格式为XML格式)
- Scala 学习笔记(一)
- SpringMVC杂记(1) 使用阿里巴巴的fastjson
- Android:Material系列:ActionBar-->Toolbar
- NYOJ 469 擅长排列的小明 II
- Android获取手机的版本号等信息
- Other:个人记录
- 文章标题
- JavaScript高级程序设计之DOM之节点层次第10.1讲
- [Django模板系统]在模板中加载css/js等静态文件
- 记ccpc南阳——首届中国大学生程序设计竞赛