springmvc转换JSON数据
1、引入jackson包
要想在springmvc框架下支持json的转换,需要引入jackson的包,在pom.xml中添加如下代码:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.7</version>
</dependency>
没有用maven的可以去官网下载jar包
修改springMVC-servlet.xml文件,修改mvc:annotation-driven标签对应的内容,其实引用了jackson的包,默认就加了对json的转换了,我试了一下,不添加也可以用。
<mvc:annotation-driven>
<mvc:message-converters>
<ref bean="stringHttpMessageConverter"/>
<ref bean="mappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven> <bean id="stringHttpMessageConverter"
class="org.springframework.http.converter.StringHttpMessageConverter"/> <bean id="mappingJackson2HttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
2、pojo类的转换
添加一个pojo类 User.java
public class User {
private String username;
private String fav;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getFav() {
return fav;
}
public void setFav(String fav) {
this.fav = fav;
}
}
Controller类中将User对象转换成json字符串输出:
@RequestMapping("/test1")
@ResponseBody
public User test1() {
User user = new User();
user.setUsername("张三");
user.setFav("乒乓球");
return user;
}
也可以这么写:
@RequestMapping("/test1")
public @ResponseBody User test1(HttpServletRequest request) {
User user = new User();
user.setUsername("张三");
user.setFav("乒乓球");
return user;
}
输出的结果是:
{"username":"张三","fav":"乒乓球"}
3、Map的转换
如果没有pojo类,只是一些键值对的输出,可以使用Map
@RequestMapping("/test2")
@ResponseBody
public Map<String,String> test2() {
Map<String,String> map = new HashMap<String,String>();
map.put("username", "张三");
map.put("fav", "乒乓球");
return map;
}
输出的结果跟上面的一样:
{"username":"张三","fav":"乒乓球"}
4、接收json串做为参数
@RequestMapping(value="/test3",consumes="application/json",method=RequestMethod.POST)
public String test3(@RequestBody User user,HttpServletRequest request) {
request.setAttribute("username", user.getUsername());
request.setAttribute("fav", user.getFav());
return "/test3";
}
这里是使用@RequestBody User user作为接收参数,如果要接收json,接收方式只能是post方式,不然会报错
这里我是返回到了一个jsp页面,这里就不把jsp页面的内容写出来了
这里列一下上一个请求页面的html:
<script type="text/javascript" src="js/jquery-2.1.1.js"></script>
<script type="text/javascript">
$.ajax({
url: "test3",
cache: false,
contentType:"application/json",
data:JSON.stringify({username:'张三',fav:'乒乓球'}),
dataType:"json",
type: "POST",
success: function(html){
alert(html);
}
});
</script>
5、另外一种选择Gson
Gson的使用更加简单,也是目前流行的json处理包,可以把jackson替掉,引入gson
pom.xml
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
springMVC-servlet.xml文件
<mvc:annotation-driven>
<mvc:message-converters>
<ref bean="stringHttpMessageConverter"/>
<ref bean="mappingGsonHttpMessageConverter" />
</mvc:message-converters>
</mvc:annotation-driven> <bean id="stringHttpMessageConverter"
class="org.springframework.http.converter.StringHttpMessageConverter"/> <bean id="mappingGsonHttpMessageConverter"
class="org.springframework.http.converter.json.GsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
springmvc转换JSON数据的更多相关文章
- SpringMVC返回JSON数据时日期格式化问题
https://dannywei.iteye.com/blog/2022929 SpringMVC返回JSON数据时日期格式化问题 博客分类: Spring 在运用SpringMVC框架开发时,可 ...
- 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展
<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...
- C#的百度地图开发(二)转换JSON数据为相应的类
原文:C#的百度地图开发(二)转换JSON数据为相应的类 在<C#的百度地图开发(一)发起HTTP请求>一文中我们向百度提供的API的URL发起请求,并得到了返回的结果,结果是一串JSON ...
- SpringMVC(三)-- 视图和视图解析器、数据格式化标签、数据类型转换、SpringMVC处理JSON数据、文件上传
1.视图和视图解析器 请求处理方法执行完成后,最终返回一个 ModelAndView 对象 对于那些返回 String,View 或 ModeMap 等类型的处理方法,SpringMVC 也会在内部将 ...
- 【Spring学习笔记-MVC-4】SpringMVC返回Json数据-方式2
<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...
- 【Spring学习笔记-MVC-3】SpringMVC返回Json数据-方式1
<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...
- js声明json数据,打印json数据,遍历json数据,转换json数据为数组
1.js声明json数据: 2.打印json数据: 3.遍历json数据: 4.转换json数据为数组; //声明JSON var json = {}; json.a = 1; //第一种赋值方式(仿 ...
- SpringMVC传递JSON数据
文章目录 一.前后端传递和接收JSON数据 1:是要Ajax默认格式来传递数据(*) 2:使用application/json格式来传递数据 二.spring-web.xml中需要如下配置 一.前后端 ...
- SpringMVC的JSON数据交互(七)-@Response,@RestController,@RequestBody用法
1.@RequestBody (自动将请求的数据封装为对象) 作用: @RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConve ...
随机推荐
- AngularJS中Directive间交互实现合成
假设需要烹饪一道菜肴,有3种原料,可以同时使用所有的3种原料,可以使用其中2种,也可以使用其中1种. 如果以Directive的写法,大致是:<bread material1 material2 ...
- CentOS 安装 Redis (高可用)
原文:https://www.sunjianhua.cn/archives/centos-redis.html 下载地址: http://download.redis.io/releases/ 官方文 ...
- Linux学习15-CentOS安装mysql5.6环境
前言 在linux上安装mysql5.6版本,并远程连接mysql数据库操作 安装mysql mysql的安装可以用yum安装更方便 [root@yoyo ~]# cd /usr/local/ [ro ...
- websocket消息推送实现
一.服务层 package com.demo.websocket; import java.io.IOException; import java.util.Iterator; import java ...
- Lua的文件操作
先简单介绍一下被迫使用Lua的IO的情境: 游戏支持玩家自定义上传头像,在排行榜中会显示玩家列表(包括本服.跨服),原有的做法是先检测CCUserDefault中是否存在指定图片的key以及它的状态. ...
- 【转】内存分析工具 MAT 的使用
本文转载自:http://blog.csdn.net/aaa2832/article/details/19419679 1 内存泄漏的排查方法 Dalvik Debug Monitor Server ...
- Check failed: mdb_status == 0 (13 vs. 0) Permission denied
文件权限问题. chown或者chmod即可 另外注意lmdb文件的权限
- diff详解
作者: 阮一峰 日期: 2012年8月29日 diff是Unix系统的一个很重要的工具程序. 它用来比较两个文本文件的差异,是代码版本管理的基石之一.你在命令行下,输入: $ diff <变动前 ...
- Android图片载入框架最全解析(一),Glide的基本使用方法
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53759439 本文同步发表于我的微信公众号.扫一扫文章底部的二维码或在微信搜索 郭 ...
- 使用Log4j将程序日志实时写入Kafka(转)
原文链接:使用Log4j将程序日志实时写入Kafka 很多应用程序使用Log4j记录日志,如何使用Kafka实时的收集与存储这些Log4j产生的日志呢?一种方案是使用其他组件(比如Flume,或者自己 ...