gpt4 book ai didi

java - JSON-B REST 负载验证

转载 作者:搜寻专家 更新时间:2023-10-31 20:31:56 25 4
gpt4 key购买 nike

我开发了一个 Java REST 服务,使用 JSON-B 将传入的有效负载映射到 POJO。

现在我想做的是验证传入的有效负载,可能是针对 JSON 模式,但到目前为止我还没有找到这方面的任何东西......

是否可以覆盖默认的 JSON-B 映射过程,从而捕获任何映射异常并自行处理?

最佳答案

要完成此操作,您可以注册自己的 JAX-RS 提供程序,该提供程序执行 JSON(反)序列化并在那里处理任何错误。

例如:

@Consumes({ "*/*" })
@Provider
public class JsonBProvider implements MessageBodyReader<Object> {

private static final Jsonb jsonb = JsonbBuilder.create();

@Override
public boolean isReadable(Class<?> type, Type genericType,
Annotation[] annotations,
MediaType mediaType) {
return true;
}

@Override
public Object readFrom(Class<Object> clazz, Type genericType, Annotation[] annotations,
MediaType mediaType, MultivaluedMap<String, String> httpHeaders,
InputStream entityStream)
throws IOException, WebApplicationException {
try {
return this.jsonb.fromJson(entityStream, clazz);
} catch (Exception e) {
// Do your custom handling here
}
}
}

这将覆盖通过 JAX-RS 和 JSON-B 发生的反序列化。

注意:如果你也想对序列化做同样的事情,你可以实现 MessageBodyWriter<Object>以类似的方式。

关于java - JSON-B REST 负载验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50087564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com