springmvc接收json數據的4種方式

原文鏈接:https://www.cnblogs.com/zzsuje/articles/10329948.html

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章