软件开发定制定制SpringMVC获取前端传来的json数据的四种方法(前后端json交互总结)

一、导包

一定要有 Jackson 的jar包依赖,就算有了,也要有Jackson包

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

二、SpringMVC获取json数据方法(后端)

1、以接收

软件开发定制定制前端传来的是json软件开发定制定制数据不多时:[id:id],可以直接用@RequestParam来获取值 

  1. @Autowired
  2. private AccomodationService accomodationService;
  3. @RequestMapping(value = "/update")
  4. @ResponseBody
  5. public String updateAttr(@RequestParam ("id") int id) {
  6. int res=accomodationService.deleteData(id);
  7. return "success";
  8. }

1、以实体类方式接收(推荐)

前端传来的是一个时:{【id,name】},可以用实体类直接进行自动绑定

  1. @Autowired
  2. private AccomodationService accomodationService;
  3. @RequestMapping(value = "/add")
  4. @ResponseBody
  5. public String addObj(@RequestBody Accomodation accomodation) {
  6. this.accomodationService.insert(accomodation);
  7. return "success";
  8. }

1、以Map接收

前端传来的是一个json对象时:{【id,name】},可以用Map来获取

  1. @Autowired
  2. private AccomodationService accomodationService;
  3. @RequestMapping(value = "/update")
  4. @ResponseBody
  5. public String updateAttr(@RequestBody Map<String, String> map) {
  6. if(map.containsKey("id"){
  7. Integer id = Integer.parseInt(map.get("id"));
  8. }
  9. if(map.containsKey("name"){
  10. String objname = map.get("name").toString();
  11. }
  12. // 操作 ...
  13. return "success";
  14. }

4、以List接收

当前端传来这样一个json数组:[{id,name},{id,name},{id,name},...]时,用List<E>接收

  1. @Autowired
  2. private AccomodationService accomodationService;
  3. @RequestMapping(value = "/update")
  4. @ResponseBody
  5. public String updateAttr(@RequestBody List<Accomodation> list) {
  6. for(Accomodation accomodation:list){
  7. System.out.println(accomodation.toString());
  8. }
  9. return "success";
  10. }

三、用ajax向后台传json字符串(前端)

在 $.ajax 中添加 contentType:'application/json' ,让前后端传递的编码一致

JSON.stringify() 把 json 对象变成 json 字符串传给后端

ajax默认为 application/x-www-form-urlencoded; charset=UTF-8 ,要穿json数据就不能用默认值

  1. $.ajax({
  2. type: "post",
  3. url: "",
  4. contentType:'application/json', //改为json的编码
  5. data: JSON.stringify(data.field), //传递时把json对象,变成json字符串
  6. dataType: "json", //处理返回的json数据
  7. success: function(data){
  8. JSON.parse(data) //把后端传递的json字符串转为json对象
  9. }
  10. });

处理后端传递的json数据时用 JSON.parse() 把 json 字符串转为 json 对象 

题外话:

后端使用 SpringMVC 向前端传 json 时 必须有注解 @RequestBody 

有了Jackson后可以直接传对象,输出时是json数据(里面的数据就是对象里面的值)

  1. @RequestMapping("/postList")
  2. @ResponseBody
  3. public User postList(User user){
  4. System.out.println(user);
  5. return user;
  6. }

或者在类上面加 @RestController

  1. @RestController
  2. public class Controller {
  3. @RequestMapping("/postList")
  4. public User postList(User user){
  5. System.out.println(user);
  6. return user;
  7. }
  8. }

参考文档:

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发