2017-06-01 12 views
0

例如,我有如下實施:有一種乾淨的方式在Spring Web API中將字符串作爲json返回?

@RequestMapping(value = "/get-string", method = {RequestMethod.GET}) 
public @ResponseBody String getString() { 
    return "Hello World!"; 
} 

當動作被阿賈克斯在JS文件中調用,得到的迴應是:HelloWorld。所以,如果Ajax請求被配置爲只接收json編碼的響應,我會收到標準的deconding錯誤。要在服務器端解決這個問題,我需要收到"HelloWorld"

我的問題是:有一個乾淨的方式,我可以做到這一點,而不是僅僅改變下面的字符串返回的字符串?

... 
    return "\"Hello World!\""; 
} 

回答

0

你可以返回一個json格式的字符串值到客戶端;

回報 「{\」 響應\ 「:\」 你好!世界\ 「}」;

+0

這是一種方式......但我想只返回'的「Hello World!」'。正如JSON規範所說(http://www.json.org),「字符串是一個零個或多個Unicode字符序列,用雙引號括起來,並使用反斜槓轉義字符。」可以是JSON。 –

+0

組成JSON的兩個主要部分是鍵和值。他們一起構成一個關鍵/值對。 [鏈接](https://developers.squarespace.com/what-is-json/) **鍵:**鍵總是用引號括起來的字符串。 **值:**值可以是字符串,數字,布爾表達式,數組或對象。 所以,我覺得沒有一個關鍵的只是一個字符串的不是一個JSON。 –

+0

我相信你不能返回一個ResponseBody對象。檢查這個https://stackoverflow.com/questions/8951534/spring-mvc-3-return-content-type-text-plain它可以通過返回一個純文本/文本字符串來解決您的問題。 –

2

嘗試增加produces = {MediaType.APPLICATION_JSON_VALUE }@RequestMapping,因爲它影響寫入的實際內容類型。要使用UTF-8編碼生成JSON響應,應使用produces = {MediaType.APPLICATION_JSON_UTF8_VALUE }

0

是的,你可以像使用GSON或傑克遜庫給你象下面這樣的JSON輸出到您的字符串轉換成JSON,在那裏。

Gson gson= new GsonBuilder().create(); 
    gson.toJson(Your String); 

而且,不要忘記添加 produces = MediaType.APPLICATION_JSON_VALUE暴露的方法使Spring知道那種鄰/對需要生產什麼。

相關問題