如何在JSON响应中生成错误消息

时间:2015-02-13 13:10:54

标签: json error-handling

我已经实现了一个Restful Web服务,它通过anotating @Produces("application/json")

生成JSON作为我的响应

使用错误代码处理应用程序错误。所以我形成一个带有错误代码和错误消息的对象。因此,当存在应用程序异常时,它将以XML格式生成。如何以JSON格式生成那些?

1 个答案:

答案 0 :(得分:0)

是的你可以。捕获您的异常并使用您的自定义异常类处理它,并通过将响应内容类型设置为application / json来抛出异常类

try{
    InitialContext ctx = new InitialContext();
    TestIntf intf = (TestIntf)ctx.lookup("java:comp/env/ejb/TestImpl");         
    }catch(NamingException namingException) {
    CustomException lookupException = new CustomException("SYSJNDIE001", namingException.getMessage());
    throw lookupException;  
}

你的Exception类看起来像这样

public class CustomException extends Exception {

    private static final long serialVersionUID = -5358934896070563181L;

    public CustomException(String errorCode, String message) {
        super(errorCode, message);
    }
}

为Exception创建一个Provider类Mapper

@Provider
public class FaultResponseMapper implements ExceptionMapper<CustomException> {

    @Context
    private HttpHeaders headers;

    @Override
    public Response toResponse(CustomException customException) {

        return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
                       .entity(customException)
                       .type(MediaType.APPLICATION_JSON).build();
    }
}