我很想知道Glassfish/Payara使用的是JAX-RS的哪个json编组/解编框架,以及如何向其中添加自定义json映射器类。
我想为我的
Enum
班我使用
provided
我的pom中的范围。JAXR的xml
javaee-api
我试着使用
@JsonValue
javax.ws.rs.ext.MessageBodyWriter
和
JsonSerializer<T>
也也不要像我期望的那样工作。
public enum ErrorCode {
MY_ERROR(123456);
private int value;
ErrorCode(final int value) {
this.value = value;
}
@JsonValue
public int getValue() {
return value;
}
}
使用枚举的类:
public class ErrorInfo {
private ErrorCode errorCode;
public String toJson() {
try {
return new ObjectMapper().writer().withDefaultPrettyPrinter().writeValueAsString(this);
} catch (JsonProcessingException e) {
// TODO: do something here...
}
}
}
还有JAX-RS类,我想在其中发回
ErrorInfo
作为json的实例:
@Provider
public class MyExceptionMapper implements ExceptionMapper<Throwable> {
@Override
public Response toResponse(Throwable throwable) {
...
return Response
.status(errorInfo.getHttpStatus())
.type(ExtendedMediaType.APPLICATION_JSON_UTF8)
.entity(errorInfo)
.build();
}
}
errorCode
值是“MY\u ERROR”字符串,而不是int 123456值。
如果我用多余的
errorInfo.toJson()
在Glassfish/Payara中,配置/添加额外枚举映射器类到默认JAX-RS json库的正确方法是什么?