Java 如何从ContainerRequestFilter使用JSON中止请求?
我想在出现错误时中止请求并返回JSON。但是下面的代码只是返回一个字符串,表示意外的“U”,这不是我的消息 如何使用JSON响应使其中止Java 如何从ContainerRequestFilter使用JSON中止请求?,java,json,jakarta-ee,jersey,jax-rs,Java,Json,Jakarta Ee,Jersey,Jax Rs,我想在出现错误时中止请求并返回JSON。但是下面的代码只是返回一个字符串,表示意外的“U”,这不是我的消息 如何使用JSON响应使其中止 requestContext.abortWith( Response.status( Response.Status.UNAUTHORIZED ).entity( e.getMessage() ).type( MediaType.APPLICATION_JSON ).build() ); 看起来e.ge
requestContext.abortWith(
Response.status( Response.Status.UNAUTHORIZED ).entity(
e.getMessage()
).type(
MediaType.APPLICATION_JSON
).build()
);
看起来e.getMessage不会为您提供有效的JSON
一旦有效的JSON可以是带引号的字符串,您就可以简单地将引号添加到异常消息中:
String message = "\"" + e.getMessage() + "\"";
requestContext.abortWith(Response.status(Response.Status.UNAUTHORIZED).entity(message)
.type(MediaType.APPLICATION_JSON).build());
或者,您可以将消息包装到bean中:
public class ApiError {
private String message;
// Getters and setters
}
然后将其作为响应实体返回:
ApiError error = new ApiError();
error.setMessage(e.getMessage());
requestContext.abortWith(Response.status(Response.Status.UNAUTHORIZED).entity(error)
.type(MediaType.APPLICATION_JSON).build());
看起来e.getMessage不会为您提供有效的JSON
一旦有效的JSON可以是带引号的字符串,您就可以简单地将引号添加到异常消息中:
String message = "\"" + e.getMessage() + "\"";
requestContext.abortWith(Response.status(Response.Status.UNAUTHORIZED).entity(message)
.type(MediaType.APPLICATION_JSON).build());
或者,您可以将消息包装到bean中:
public class ApiError {
private String message;
// Getters and setters
}
然后将其作为响应实体返回:
ApiError error = new ApiError();
error.setMessage(e.getMessage());
requestContext.abortWith(Response.status(Response.Status.UNAUTHORIZED).entity(error)
.type(MediaType.APPLICATION_JSON).build());
注意:对于Jersey 1.x,您通过抛出javax.ws.rs.WebApplicationExceptionjavax.ws.rs.core.Response中止。注意:对于Jersey 1.x,您通过抛出javax.ws.rs.WebApplicationExceptionjavax.ws.rs.core.Response中止。