在SpringMVC中,可以使用@RequestBody和@ResponseBody兩個注解,分別完成請求報文到對象和對象到響應報文的轉換。
1.@ResponseBody
該注解用於將Controller的方法返回的對象,通過適當的HttpMessageConverter轉換為指定格式后,寫入到Response對象的body數據區。
即可以將返回的對象(帶有數據的javabean的集合List或Map)轉換成JSON。
2.@RequestBody
該注解用於讀取Request請求的body部分數據,使用系統默認配置的HttpMessageConverter進行解析,然后把相應的數據綁定到要返回的對象上。
3.HttpMessageConverter
4.jackson包
5.ajax使用要注意的
1. JSON.stringify()和$.parseJSON()實現字符串和json對象之間的轉換。注意要傳過去的data是一個字符串。
2.要設置contentType: 'application/json',而不是使用默認值: "application/x-www-form-urlencoded".
jsp頁面
$(function(){ $("#btn").click(function(){ var data2 = {"id":23,"name":"tt","passwd":"345"}; //alert(JSON.stringify(data2)); $.ajax({ type: 'post', url:'json.action', cache:false, data:JSON.stringify(data2), contentType: 'application/json', dataType: 'json', success:function(result){ //result = $.parseJSON(result); alert(result[0].password); alert(JSON.stringify(result)); }, }); });
controller
@RequestMapping(value="/json.action",method=RequestMethod.POST) @ResponseBody public List<Author> getAuthor2(@RequestBody User user){ System.out.println(user.getName()); Author aut1 = authorService.findAuthor(3); Author aut2 = authorService.findAuthor(4); List<Author> list = new ArrayList<Author>(); list.add(aut1); list.add(aut2); return list; }