我写了这个MessageBodyReader来与任何类型的对象匹配,但是没有被调用。 json-b的默认实现尝试将字符串解析为对象,但是在尝试解析日期时却给出了错误,该日期是我用杰克逊注释映射的,这表明未调用我的MessageBodyReader。
@Provider
@Consumes(MediaType.APPLICATION_JSON)
public class JacksonMessageBodyReader implements MessageBodyReader {
@Override
public boolean isReadable(Class type, Type genericType, Annotation[] annotations, MediaType mediaType) {
return true;
}
@Override
public Object readFrom(Class type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap httpHeaders, InputStream entityStream) throws IOException, WebApplicationException {
return new ObjectMapper().readValue(entityStream, type);
}
}
这里是一个简单的资源。
@Path("/visits")
public class VisitResource {
@Inject
Repository<Visit> repository;
....
@POST
public Response post(Visit visit) {
repository.create(visit);
return Response.status(Response.Status.CREATED).build();
}
}