首頁  >  文章  >  Java  >  當controller方法的回傳值為簡單類型,該如何與json互動?

當controller方法的回傳值為簡單類型,該如何與json互動?

Y2J
Y2J原創
2017-05-16 09:23:281669瀏覽

這篇文章主要介紹了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:&#39;json&#39;,
   //contentType:&#39;application/json;charset=utf-8&#39;,
   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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn