springmvc接收json數據的4種方式


ajax我經常用到,傳的數據是json數據,json數據又有對象,數組。所有總結下springmvc獲取前端傳來的json數據方式:

1、以RequestParam接收

前端傳來的是json數據不多時:[id:id],可以直接用@RequestParam來獲取值

@Autowired
private AccomodationService accomodationService;  @RequestMapping(value = "/update") @ResponseBody public String updateAttr(@RequestParam ("id") int id) { int res=accomodationService.deleteData(id);  return "success"; }

 

2、以實體類方式接收

前端傳來的是一個json對象時:{【id,name】},可以用實體類直接進行自動綁定

@Autowired
private AccomodationService accomodationService;   @RequestMapping(value = "/add") @ResponseBody  public String addObj(@RequestBody Accomodation accomodation) { this.accomodationService.insert(accomodation);  return "success";  }

3、以Map接收

前端傳來的是一個json對象時:{【id,name】},可以用Map來獲取

@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"; }

4、以List接收

當前端傳來這樣一個json數組:[{id,name},{id,name},{id,name},...]時,用List<E>接收

@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"; }

補充4

SpringMVC接收List型參數

 
        

1、controller

 
        
復制代碼
@RequestMapping("/postList")
    @ResponseBody
    public String postList(@RequestBody List<TestL> testL){ System.out.println(testL); return null; }
復制代碼
 
        

需要注意點:參數前面必須有注解 @RequestBody

 
        

2、ajax請求

 
        
復制代碼
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必須添加,否則會報415錯誤  headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, type: 'POST', dataType: "json", //表示返回值類型,不必須  data: JSON.stringify(testList), url: '/test/postList', success: function(){ alert('success'); } });
復制代碼
 
        

需要注意點:1、參數是數組類型

 
        

      2、傳入data時,轉換 JSON.stringify(testList)

 
        

      3、必須有headers: {

 
        
         'Accept': 'application/json',         'Content-Type': 'application/json'         }

最后再看下TestL類,沒有特別之處(不用包裝)。
 
        
復制代碼
public class TestL { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
復制代碼
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM