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
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");
}
}