1、引入jackson包

要想在springmvc框架下支持json的转换,需要引入jackson的包,在pom.xml中添加如下代码:

  1. <dependency>
  2. <groupId>com.fasterxml.jackson.core</groupId>
  3. <artifactId>jackson-core</artifactId>
  4. <version>2.9.7</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.fasterxml.jackson.core</groupId>
  8. <artifactId>jackson-databind</artifactId>
  9. <version>2.9.7</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>com.fasterxml.jackson.core</groupId>
  13. <artifactId>jackson-annotations</artifactId>
  14. <version>2.9.7</version>
  15. </dependency>

没有用maven的可以去官网下载jar包

修改springMVC-servlet.xml文件,修改mvc:annotation-driven标签对应的内容,其实引用了jackson的包,默认就加了对json的转换了,我试了一下,不添加也可以用。

  1. <mvc:annotation-driven>
  2. <mvc:message-converters>
  3. <ref bean="stringHttpMessageConverter"/>
  4. <ref bean="mappingJackson2HttpMessageConverter"/>
  5. </mvc:message-converters>
  6. </mvc:annotation-driven>
  7.  
  8. <bean id="stringHttpMessageConverter"
  9. class="org.springframework.http.converter.StringHttpMessageConverter"/>
  10.  
  11. <bean id="mappingJackson2HttpMessageConverter"
  12. class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
  13. <property name="supportedMediaTypes">
  14. <list>
  15. <value>text/html;charset=UTF-8</value>
  16. </list>
  17. </property>
  18. </bean>

2、pojo类的转换

添加一个pojo类 User.java

  1. public class User {
  2.  
  3. private String username;
  4. private String fav;
  5.  
  6. public String getUsername() {
  7. return username;
  8. }
  9. public void setUsername(String username) {
  10. this.username = username;
  11. }
  12. public String getFav() {
  13. return fav;
  14. }
  15. public void setFav(String fav) {
  16. this.fav = fav;
  17. }
  18.  
  19. }

Controller类中将User对象转换成json字符串输出:

  1. @RequestMapping("/test1")
  2. @ResponseBody
  3. public User test1() {
  4. User user = new User();
  5. user.setUsername("张三");
  6. user.setFav("乒乓球");
  7. return user;
  8. }

也可以这么写:

  1. @RequestMapping("/test1")
  2. public @ResponseBody User test1(HttpServletRequest request) {
  3. User user = new User();
  4. user.setUsername("张三");
  5. user.setFav("乒乓球");
  6. return user;
  7. }

输出的结果是:

  1. {"username":"张三","fav":"乒乓球"}

3、Map的转换

如果没有pojo类,只是一些键值对的输出,可以使用Map

  1. @RequestMapping("/test2")
  2. @ResponseBody
  3. public Map<String,String> test2() {
  4. Map<String,String> map = new HashMap<String,String>();
  5. map.put("username", "张三");
  6. map.put("fav", "乒乓球");
  7. return map;
  8. }

输出的结果跟上面的一样:

  1. {"username":"张三","fav":"乒乓球"}

4、接收json串做为参数

  1. @RequestMapping(value="/test3",consumes="application/json",method=RequestMethod.POST)
  2. public String test3(@RequestBody User user,HttpServletRequest request) {
  3. request.setAttribute("username", user.getUsername());
  4. request.setAttribute("fav", user.getFav());
  5. return "/test3";
  6. }

这里是使用@RequestBody User user作为接收参数,如果要接收json,接收方式只能是post方式,不然会报错

这里我是返回到了一个jsp页面,这里就不把jsp页面的内容写出来了

这里列一下上一个请求页面的html:

  1. <script type="text/javascript" src="js/jquery-2.1.1.js"></script>
  2. <script type="text/javascript">
  3. $.ajax({
  4. url: "test3",
  5. cache: false,
  6. contentType:"application/json",
  7. data:JSON.stringify({username:'张三',fav:'乒乓球'}),
  8. dataType:"json",
  9. type: "POST",
  10. success: function(html){
  11. alert(html);
  12. }
  13. });
  14. </script>

5、另外一种选择Gson

Gson的使用更加简单,也是目前流行的json处理包,可以把jackson替掉,引入gson

pom.xml

  1. <dependency>
  2. <groupId>com.google.code.gson</groupId>
  3. <artifactId>gson</artifactId>
  4. <version>2.8.5</version>
  5. </dependency>

springMVC-servlet.xml文件

  1. <mvc:annotation-driven>
  2. <mvc:message-converters>
  3. <ref bean="stringHttpMessageConverter"/>
  4. <ref bean="mappingGsonHttpMessageConverter" />
  5. </mvc:message-converters>
  6. </mvc:annotation-driven>
  7.  
  8. <bean id="stringHttpMessageConverter"
  9. class="org.springframework.http.converter.StringHttpMessageConverter"/>
  10.  
  11. <bean id="mappingGsonHttpMessageConverter"
  12. class="org.springframework.http.converter.json.GsonHttpMessageConverter">
  13. <property name="supportedMediaTypes">
  14. <list>
  15. <value>text/html;charset=UTF-8</value>
  16. </list>
  17. </property>
  18. </bean>

springmvc转换JSON数据的更多相关文章

  1. SpringMVC返回JSON数据时日期格式化问题

    https://dannywei.iteye.com/blog/2022929 SpringMVC返回JSON数据时日期格式化问题 博客分类: Spring   在运用SpringMVC框架开发时,可 ...

  2. 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  3. C#的百度地图开发(二)转换JSON数据为相应的类

    原文:C#的百度地图开发(二)转换JSON数据为相应的类 在<C#的百度地图开发(一)发起HTTP请求>一文中我们向百度提供的API的URL发起请求,并得到了返回的结果,结果是一串JSON ...

  4. SpringMVC(三)-- 视图和视图解析器、数据格式化标签、数据类型转换、SpringMVC处理JSON数据、文件上传

    1.视图和视图解析器 请求处理方法执行完成后,最终返回一个 ModelAndView 对象 对于那些返回 String,View 或 ModeMap 等类型的处理方法,SpringMVC 也会在内部将 ...

  5. 【Spring学习笔记-MVC-4】SpringMVC返回Json数据-方式2

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  6. 【Spring学习笔记-MVC-3】SpringMVC返回Json数据-方式1

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  7. js声明json数据,打印json数据,遍历json数据,转换json数据为数组

    1.js声明json数据: 2.打印json数据: 3.遍历json数据: 4.转换json数据为数组; //声明JSON var json = {}; json.a = 1; //第一种赋值方式(仿 ...

  8. SpringMVC传递JSON数据

    文章目录 一.前后端传递和接收JSON数据 1:是要Ajax默认格式来传递数据(*) 2:使用application/json格式来传递数据 二.spring-web.xml中需要如下配置 一.前后端 ...

  9. SpringMVC的JSON数据交互(七)-@Response,@RestController,@RequestBody用法

    1.@RequestBody   (自动将请求的数据封装为对象) 作用: @RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConve ...

随机推荐

  1. .NET中常见的内存泄漏和解决办法

    在.NET中,虽然CLR的GC垃圾回收器帮我们自动回收托管堆对象,释放内存,最大程度避免了"内存泄漏"(应用程序所占用的内存没有得到及时释放),但.NET应用程序"内存泄 ...

  2. 使用C#的泛型队列Queue实现生产消费模式

    本篇体验使用C#的泛型队列Queue<T>实现生产消费模式. 如果把生产消费想像成自动流水生产线的话,生产就是流水线的物料,消费就是某种设备对物料进行加工的行为,流水线就是队列. 现在,要 ...

  3. .net项目中使用Quartz

    (1)在web.config中进行相关配置 <configSections> <section name="quartz" type="System.C ...

  4. 【转】iPhone易被窃听应用三分钟即可获取所有信息

    2011年8月9日10:19 “你有iPhone吗?这下你麻烦了!”昨天香港<东方日报>封面文章用这样的语气报道说,一种iPhone等智能手机窃听程序,正引爆香港. 该报记者亲自试验,发现 ...

  5. Java中使用正则表达式获取网页中所有图片的路径

    public static List<String> getImageSrc(String htmlCode) { List<String> imageSrcList = ne ...

  6. Swift - CALayer的contents属性动画

    Swift - CALayer的contents属性动画 效果 源码 https://github.com/YouXianMing/Swift-Animations // // LiveImageVi ...

  7. php定时回调接口

    http://www.dewen.org/search/q/php%E5%AE%9A%E6%97%B6%E8%B0%83%E7%94%A8%E5%AD%98%E5%82%A8%E8%BF%87%E7% ...

  8. [转]Linux awk 命令 说明

    From : http://blog.csdn.net/tianlesoftware/article/details/6278273 一.  AWK 说明 awk是一种编程语言,用于在linux/un ...

  9. 利用Bootstrap+Avalonjs+EntityFramework 开发ASP.NET WebForm应用程序(上)

    本文将介绍如何利用Bootstrap+Avalonjs+EntityFramework 开发ASP.NET WebForm应用程序,分为上下两篇.上篇主要介绍实现,下篇主要介绍界面. 打开Visual ...

  10. 数据库分库分表中间件:Mycat;分布式数据库;mysql的分布式事务

    官网:http://mycat.io/,里面有电子书籍可以下载:http://www.mycat.io/document/mycat-definitive-guide.pdf 旧版本下载地址:http ...