2017-03-21 118 views
0

我寫這樣我的春節,REST服務:JSON響應具有反斜槓字符

@RequestMapping(value = "/{name}", method = RequestMethod.GET, 
     consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) 
public ResponseEntity<Map<String, Object>> 
      getStudentByName(@PathVariable("name") String name) { 
    Map<String, Object> map = null; 
    try { 
     map = new HashMap<String, Object>(); 
     map.put("name", "Tom Joe); 
     map.put("id", "t100"); 
     map.put("dept", "nuclear energy");   
    } catch (Exception e) { 
     LOG.error("Error finding with name " + name, e); 
    } 

    return new ResponseEntity<Map<String, Object>>(map, HttpStatus.OK); 
} 

我得到這樣的輸出在客戶端基本上是一個字符串:

"{\"name\":\"Tom Joe\",\"id\":\"100\",\"dept\":\"nuclear energy\"}" 

但我需要的輸出是:

{ 
"name":"Tom Joe", 
"id":"t100", 
"dept":"nuclear energy" 
} 

誰能告訴我如何避免發送和反斜槓反而發送適當的json?我能否做到這一點返回地圖?

+0

我會嘗試生產= MediaType.APPLICATION_JSON,而MIME類型APPLICATION_JSON_VALUE給你一個字符串轉換。 – Tim

+0

@Tim那不會編譯。 MediaType.APPLICATION_JSON是一個MediaType值。 'produce'期望'String []'。 –

+0

不知道爲什麼我的下面的答案是downvoted,但代碼似乎工作正常..我會檢查您使用的客戶端,如果它是一個Java客戶端它可能會將轉義字符添加到響應時顯示它。 – Pete

回答

-1

我想你的代碼在我的應用程序,它似乎可以按預期工作:

@RestController 
public class TestController { 

... 

@RequestMapping(value = "/{name}", method = RequestMethod.GET, 
     consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) 
public ResponseEntity<Map<String, Object>> getStudentByName(@PathVariable("name") String name) { 
    Map<String, Object> map = null; 
    try { 
     map = new HashMap<String, Object>(); 
     map.put("name", "Tom Joe"); 
     map.put("id", "t100"); 
     map.put("dept", "nuclear energy"); 
    } catch (Exception e) { 
     LOGGER.error("Error finding with name " + name, e); 
    } 

    return new ResponseEntity<Map<String, Object>>(map, HttpStatus.OK); 
} 
} 

提供了以下的輸出:

{ 「名」: 「湯姆·喬」,「ID 「:」t100「,」dept「:」nuclear energy「}

您正在使用哪個客戶端?我在Chrome中使用Advanced Rest客戶端。

+0

令人驚訝。我正在使用我自己的Java客戶端進行測試。基本上,創建HttpURLConnection並使用其輸入流獲取響應。我得到的迴應,但它是一個單一的字符串,而不是良好的JSON。 – sburnwal

+0

你在瀏覽器中試過了嗎? – Pete

+0

你是對的。 Service確實返回正確的json,但Gson.toJson(響應)正在添加這些反斜槓。對不起,這篇文章! – sburnwal