我正在尝试使用Jersey从我的Jetty服务器获取一个简单的JSON格式对象。
我一直收到错误:
SEVERE: A message body writer for Java class my.package.resources.Album, and Java type class my.package.resources.Album, and MIME media type application/json was not found
一个问题是我不确定将POJOMappingFeature放在Jetty的哪个位置,我尝试了以下但是没有更改错误:
myServletHolder.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
和
myServletContextHandler.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
我知道Jersey的基本REST功能正在运行,因为在我尝试使用JSON输出之前,我使用了纯文本并且效果很好。
答案 0 :(得分:6)
当我看到这个没有回答的时候,我感到非常失望,因为我一整天都在打架。终于想通了,所以这里对我有用。
我在做什么:
ServletHolder servletHolder = new ServletHolder(new ServletContainer(new PackagesResourceConfig("my.package.with.resources")));
servletHolder.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
我需要做什么:
Map<String,Object> initMap = new HashMap<String, Object>();
initMap.put("com.sun.jersey.api.json.POJOMappingFeature", "true");
initMap.put("com.sun.jersey.config.property.packages", "my.package.with.resources");
ServletHolder servletHolder = new ServletHolder(new ServletContainer(new PackagesResourceConfig(initMap)));
我必须确保将我的Jersey包和我的POJOMappingFeature标志指定为init params。希望这会有所帮助。
答案 1 :(得分:1)
确保您的类路径中有jackson
json-parser和JAXB
lib。