這篇文章主要介紹了springmvc之json資料交互controller方法傳回值為簡單型別,非常具有實用價值,需要的朋友可以參考下
當controller方法的傳回值為簡單型別例如String時,該如何與json互動呢?
使用@RequestBody
例如程式碼如下:
@RequestMapping(value="/ceshijson",produces="application/json;charset=UTF-8") @ResponseBody public String ceshijson(@RequestBody String channelId) throws IOException{ return channelId;
如果程式碼為上面這種情況時,前台發送json時,應該這樣寫(寫法有很多,能用就行)
function channel(){ //先获取选中的值 var channelId = $("#channelId option:selected").val(); //来判断发送的链接 if(channelId ==2){ $.ajax({ url:"ceshijson", type:"post", dataType:'json', contentType:'application/json;charset=utf-8', data:JSON.stringify({'channelId':channelId}), success:function(data){ alert(data.channelId); }, error:function(XMLHttpRequest, textStatus, errorThrown){ alert("Error") alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); } }); } }
這裡需要特別注意:上篇也強調過,使用了@RequestBody時,它要求String channelId接收到資料為json字串。也就是要是data寫成這樣: data:{‘channelId':channelId},就是錯的。因為這是json物件形式。
要是你不想使用JSON.stringify()這個函數,那就自己手動字串拼接:
data:'{"channelId":'+channelId+'}'
這裡還要注意channelId是雙引號,不能寫成單引號,因為這是json語法規則。你改成單引號,也就是
**錯誤寫法
data:"{'channelId':"+channelId+"}"
這種形式,雖然可以傳給後台,但是後台傳回來的會出現undefined。也就是key必須要用雙引號包圍。
不使用@RequestBody
@RequestMapping(value="/ceshijson",produces="application/json;charset=UTF-8") @ResponseBody public String ceshijson(String channelId) throws IOException{ Map<String,Object> map = new HashMap<String,Object>(); map.put("channelId", channelId); ObjectMapper mapper = new ObjectMapper(); channelId = mapper.writeValueAsString(map); return channelId; }
前台程式碼
$.ajax({ url:"ceshijson", type:"post", dataType:'json', //contentType:'application/json;charset=utf-8', data:"channelId="+channelId, success:function(data){ alert(data); }, error:function(XMLHttpRequest, textStatus, errorThrown){ alert("Error") alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); } });
這種方式利用ObjectMapper中的writeValueAsString將Java物件轉換為json字串。
總結:這種方式,其實是沒有多大的實際意思,因為一般接收資料不是這麼接收的。只做了解!
【相關推薦】
1. 特別推薦:「php程式設計師工具箱」V0.1版本下載
2. Java免費影片教學
3. JAVA初級入門影片教學
以上是當controller方法的回傳值為簡單類型,該如何與json互動?的詳細內容。更多資訊請關注PHP中文網其他相關文章!