I have a requirement, where in i need to read JSON request that is coming in as part of the request and also convert it to POJO at the same time. I was able to convert it to POJ
One posibility is to use a ContainerRequestFilter that's called before your method is invoked:
public class MyRequestFilter
implements ContainerRequestFilter {
@Override
public ContainerRequest filter(ContainerRequest req) {
// ... get the JSON payload here
return req;
}
}
Here is an example for Jersey 2.0, just in case someone needs it (inspired by futuretelematics). It intercepts JSON and even allows to change it.
@Provider
public class MyFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext request) {
if (isJson(request)) {
try {
String json = IOUtils.toString(req.getEntityStream(), Charsets.UTF_8);
// do whatever you need with json
// replace input stream for Jersey as we've already read it
InputStream in = IOUtils.toInputStream(json);
request.setEntityStream(in);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
}
boolean isJson(ContainerRequestContext request) {
// define rules when to read body
return request.getMediaType().toString().contains("application/json");
}
}