spring使用jackson实现json输出
来源:互联网 发布:网络机顶盒连接电视 编辑:程序博客网 时间:2024/05/16 06:37
原文:http://blog.chinaunix.net/uid-192452-id-3967223.html
pring的mvc 3.0和3.1处理json略有不同,用RequestMappingHandlerMapping和RequestMappingHandlerAdapter替代了原有的DefaultMethodHandlerMapping和 AnnotationMethodHandlerAdapter。
在controller里支持使用@RequestBody注解,自动将requestbody里的json字符串的entity 转换为对应的对象实例,需要增加messageconverter,默认没有MappingJackson2HttpMessageConverter, @ResponseBody对应了一系列解析器,RequestMappingHandlerAdapter的messageConverters属性,默认情况下会自动注册一堆Converter,
Converter是每种对象类型都有一个专门针对的默认情况下没有Map对应的解析器,可能会映射到MappingJackson2HttpMessageConverter,
例如如下代码
@RequestMapping(value = "/vpnserver/status", method = RequestMethod.GET)
@ResponseBody
public Map status()
{
String retstr = "stop";
Map<String,Object> map =new HashMap<String,Object>();
List <String> ls =vpnConfigService.getPid(Constant.VPNSERVER_Name);
if(ls.size()>0)
{
retstr = "running";
}
map.put("status",retstr);
return map;
}
加了@ResponseBody注解后,return的数据如何解析就是这个属性配置的Converter负责的。
3.1之后默认注入RequestMappingHandlerAdapter只需加上ackson-annotations-2.0.5.jar,jackson-databind-2.0.5.jar,jackson-core-2.0.5.jar。
类似的文件配置文件
<bean
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
</bean>
<bean
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
</list>
</property>
</bean>
java代码,其实不用添加
public class ApplicationContext extends WebMvcConfigurerAdapter {
。。。。。。。
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(converter());
}
@Bean
MappingJackson2HttpMessageConverter converter() {
//Set HTTP Message converter using a JSON implementation.
MappingJackson2HttpMessageConverter jsonMessageConverter = new MappingJackson2HttpMessageConverter();
// Add supported media type returned by BI API.
List<MediaType> supportedMediaTypes = new ArrayList<MediaType>();
supportedMediaTypes.add(new MediaType("text", "plain"));
supportedMediaTypes.add(new MediaType("application", "json"));
jsonMessageConverter.setSupportedMediaTypes(supportedMediaTypes);
return jsonMessageConverter;
}
}
也可以使用WebMvcConfigurationSupport 代替 WebMvcConfigurerAdapter ,可以进行更多类型的定制。
处于Ajax返回json字符串的中文乱码问题
org.springframework.http.converter.StringHttpMessageConverter类是处理请求或相应字符串的类,并且默认字符集为ISO-8859-1,所以在当返回json中有中文时会出现乱码。
StringHttpMessageConverter的父类里有个List<MediaType> supportedMediaTypes属性,用来存放StringHttpMessageConverter支持需特殊处理的MediaType类型,如果需处理的MediaType类型不在supportedMediaTypes列表中,则采用默认字符集。
解决办法,只需在配置文件中加入如下代码:
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
如果需要处理其他 MediaType 类型,可在list标签中加入其他value标签
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name = "supportedMediaTypes"> <list> <value>apolication/json; charset=UTF-8</value> <value>text/html;charset=UTF-8</value> </list> </property> </bean> </list> </property></bean>
- spring使用jackson实现json输出
- spring使用jackson实现json输出
- Json使用Jackson实现子类多态
- Jersey 配合 Jackson 输出 json
- jackson使用--注解json
- spring mvc json jackson 配置
- 使用jackson去解析json
- 使用Jackson解析Json示例
- 使用 jackson 解析 json 示例
- Jackson 框架使用,JSON转换
- 使用jackson转换json攻略
- jackson使用xml转json
- Jackson的使用(json解析)
- spring框架中的jackson解析json方法
- java spring使用Jackson过滤
- Spring MVC中使用jackson的MixInAnnotations方法动态过滤JSON字段
- Spring MVC中使用jackson的MixInAnnotations方法动态过滤JSON字段
- Spring MVC中使用jackson的MixInAnnotations方法动态过滤JSON字段
- ZOJ3408 Gao 单源最短路乱搞
- Ukylin手机助手相关理论及关键技术
- 今日作息及食谱(7.17)
- 职场新人--MyEclipse常用配置
- Ukylin手机助手可行性分析
- spring使用jackson实现json输出
- C++ 类赋值运算符函数
- centos中安装mysql并使用mysql
- 2进制 8进制 10进制 16进制 数值表示之一般规律
- Web.config配置文件详解
- UVA 11427 - Expect the Expected(概率递推期望)
- 使用View.getWidth()方法出现的问题及解决方法
- Linux磁盘挂载操作手册
- 【程序员编程艺术】学习记录2:左旋转字符串之循环移位法