在Spring MVC中接收JSON对象可以通过多种方式实现,以下是详细的步骤和小标题格式的说明:

以@RequestParam接收
适用场景
前端传来的是少量json数据时,例如单个键值对。
示例代码
@Autowired
private AccomodationService accomodationService;
@RequestMapping(value = "/update")
@ResponseBody
public String updateAttr(@RequestParam("id") int id) {
int res = accomodationService.deleteData(id);
return "success";
}
以实体类方式接收
适用场景
前端传来的是一个json对象时,“id”:1, “name”:“John Doe”}。
示例代码
@Autowired
private AccomodationService accomodationService;
@RequestMapping(value = "/add")
@ResponseBody
public String addObj(@RequestBody Accomodation accomodation) {
this.accomodationService.insert(accomodation);
return "success";
}
以Map接收
适用场景
前端传来的是一个json对象时,“id”:1, “name”:“John Doe”}。
示例代码

@Autowired
private AccomodationService accomodationService;
@RequestMapping(value = "/update")
@ResponseBody
public String updateAttr(@RequestBody Map<String, String> map) {
if (map.containsKey("id")) {
Integer id = Integer.parseInt(map.get("id"));
}
if (map.containsKey("name")) {
String objname = map.get("name").toString();
}
// 操作 ...
return "success";
}
以List接收
适用场景
当前端传来一个json数组时,{“id”:1, “name”:“John Doe”}, {“id”:2, “name”:“Jane Doe”}]。
示例代码
@Autowired
private AccomodationService accomodationService;
@RequestMapping(value = "/update")
@ResponseBody
public String updateAttr(@RequestBody List<Accomodation> list) {
for (Accomodation accomodation : list) {
System.out.println(accomodation.toString());
}
return "success";
}
使用@RequestBody注解
解释与注意事项
@RequestBody注解用于将HTTP请求体中的JSON数据绑定到方法参数上,它适用于接收复杂的JSON对象或数组。
在使用@RequestBody时,需要确保前端发送的数据类型为application/json,并且需要在ajax请求中设置相应的headers。
Ajax请求示例
发送JSON对象
var jsonObject = {"username": "admin", "password": 123};
$.ajax({
url: "/jsontest",
type: "POST",
contentType: "application/json",
data: JSON.stringify(jsonObject),
success: function(data) {
alert('success');
}
});
发送JSON数组
var testList = [];
var user = {};
user.id = 1;
user.name = 'jack';
testList.push(user);
var user2 = {};
user2.id = 2;
user2.name = 'tom';
testList.push(user2);
$.ajax({
headers: {
'Accept': 'application/json',
'ContentType': 'application/json'
},
type: 'POST',
dataType: "json", //表示返回值类型,不必须
data: JSON.stringify(testList),
url: '/test/postList',
success: function() {
alert('success');
}
});
SpringMVC配置与依赖
Maven依赖

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jacksoncore</artifactId>
<version>2.11.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jacksondatabind</artifactId>
<version>2.11.4</version>
</dependency>
SpringMVC配置
<mvc:annotationdriven/>
相关问题与解答栏目
问题1:为什么使用@RequestBody时需要设置ContentType为application/json?
答:@RequestBody注解用于处理ContentType不是application/xwwwformurlencoded的内容,如application/json和application/xml等,如果不设置ContentType为application/json,Spring MVC会无法正确解析传入的JSON数据,从而导致415错误(Unsupported Media Type)。
问题2:如何在Spring MVC中接收JSON数组?
答:要在Spring MVC中接收JSON数组,可以使用@RequestBody注解并将方法参数定义为List<E>类型,其中E是数组元素的类型,前端需要将JSON数组转换为字符串并设置ContentType为application/json,后端控制器方法会自动将JSON数组转换为Java的List对象。
各位小伙伴们,我刚刚为大家分享了有关“Spring mvc 接收json对象”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!













