欢迎光临
我们一直在努力

Spring MVC 如何有效接收并处理 JSON 对象?

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

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”}。

示例代码

Spring MVC 如何有效接收并处理 JSON 对象?

@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依赖

Spring MVC 如何有效接收并处理 JSON 对象?

<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对象”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Spring MVC 如何有效接收并处理 JSON 对象?》
文章链接:https://yuyunkj.com/article/9349.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发