Java 从Spring异常处理程序返回JSON响应

Java 从Spring异常处理程序返回JSON响应,java,json,spring,spring-mvc,Java,Json,Spring,Spring Mvc,我使用下面提到的Spring代码来处理异常并将响应返回给客户端。因为我在这里使用了ResponseBody注释,所以我希望spring在出现错误时返回JSON响应,但我看到下面在客户端收到的响应(JSON响应在responseText中,而不是直接返回到客户端)。请告知我如何将JSON响应返回给调用方- 在客户端收到的响应:- Object {readyState: 4, responseText: "{"status":false,"msg":"User Data not available"

我使用下面提到的Spring代码来处理异常并将响应返回给客户端。因为我在这里使用了ResponseBody注释,所以我希望spring在出现错误时返回JSON响应,但我看到下面在客户端收到的响应(JSON响应在responseText中,而不是直接返回到客户端)。请告知我如何将JSON响应返回给调用方-

在客户端收到的响应:-

Object {readyState: 4, responseText: "{"status":false,"msg":"User Data not available","r…"MARSAPI003","noOfRecords":0,"responseList":null}", responseJSON: Object, status: 403, statusText: "Forbidden"}
弹簧代码:-

@ExceptionHandler(MarsUnAuthorizedOperation.class)
@ResponseBody
@ResponseStatus(value=HttpStatus.FORBIDDEN)
public MarsResponse unAuthorizedOperationExceptionHandler(final Exception ex){
    final MarsResponse response = new MarsResponse();
    response.setNoOfRecords(0);
    response.setMsg(ex.getMessage());
    response.setResponseCode(marsMessageProperties.getUnauthorizedOperationErrorCd());
    response.setResponseMessage(marsMessageProperties.getUnauthorizedOperationErrorMsg());
    response.setStatus(false);
    return response;
}

我认为是@ResponseBody注释阻止了spring将您的MarsResponse对象编组到JSON对象。尝试删除它并再次检查。

我认为是@ResponseBody注释阻止spring将您的MarsResponse对象编组为JSON对象。尝试删除它并再次检查。

我认为它可能会干扰@ResponseStatus(value=HttpStatus.probled)注释(这会导致其他处理程序进一步处理它)。尝试删除它,同时确保类本身用@ControllerAdvice注释。我想在一年多过去后,您不需要这个建议,但我也会把它留给在这里流浪的人。尝试在类的顶部添加@products(MediaType.APPLICATION\u JSON)。我认为它可能会干扰@ResponseStatus(value=HttpStatus.banbidded)注释(这会导致其他处理程序进一步处理它)。尝试删除它,同时确保类本身用@ControllerAdvice注释。我想在一年多过去后,你不需要这个建议,但我也会把它留给那些在这里流浪的人。试着在类的顶部添加@products(MediaType.APPLICATION_JSON)。