如何从Spring Web应用程序返回一个字符串作为有效的JSON?

时间:2014-11-11 21:32:22

标签: java json spring spring-mvc

我的REST Web服务应用程序有一个Spring端点,我想返回一个字符串:

"Unauthorized: token is invalid"

但我在前端的javascript对此嗤之以鼻:

JSON.parse("Unauthorized: token is invalid") //Unexpected token U

如何让我的应用返回有效的JSON字符串?这是我目前的代码:

@RequestMapping(value="/401")
public ResponseEntity<String> unauthorized() {
    return new ResponseEntity<String>("Unauthorized: token is invalid", HttpStatus.UNAUTHORIZED);
}

2 个答案:

答案 0 :(得分:13)

改为返回地图。

Map<String,String> result = new HashMap<String,String>();

result.put("message", "Unauthorized...");

return result;

您不需要返回ResponseEntity,您可以直接退回POJO或收藏品。如果要返回POJO或集合,请将@ResponseBody添加到处理程序方法。

此外,我说最好使用forward而不是redirect来处理错误。

答案 1 :(得分:8)

@Neil提供了一个更好的替代方案,可以帮助您实现目标。

然而,在回答问题时,你很接近。

以下修改后的代码应生成有效的JSON响应

@RequestMapping(value="/401")
public ResponseEntity<String> unauthorized() {

    String json = "[\"Unauthorized\": \"token is invalid\"]";
    HttpHeaders responseHeaders = new HttpHeaders();
    responseHeaders.setContentType(MediaType.APPLICATION_JSON);
    return new ResponseEntity<String>(json, responseHeaders, HttpStatus.UNAUTHORIZED);
}