2013-09-30 23 views
8

消息:找不到MessageBodyWriter类型的响应对象:媒体类型的 java.util.ArrayList中:应用/ JSONRestEasy的:找不到MessageBodyWriter类型的响应对象:媒体类型的java.util.ArrayList中:应用/ JSON

描述:服务器遇到一个内部错误(找不到 MessageBodyWriter类型的响应对象: 媒体类型的java.util.ArrayList中:应用/ JSON)阻止其履行此 请求

@GET 
@Path("/{userName}/questions") 
//@Produces("application/json") 
public Response getUserQuestions(@PathParam("userName") String userName){    
    UserDAO userDAO = new UserDAO();   
    List<Question> questions = userDAO.getUserQuestionsByUserName(userName);   
    GenericEntity<List<Question>> entity = new GenericEntity<List<Question>>(questions){};  
    return Response.status(200).entity(entity).type(MediaType.APPLICATION_JSON).build(); 
} 

我在类路径中找到了reteasy jackson提供程序。 试图将返回类型表ArrayList更改为List,然后根据resteasy response将其包装在GenericEntity中,但仍然出现同样的问题。

在tomcat7上运行。

谢谢。

+0

[该溶液](http://stackoverflow.com/questions/15618061/a-message-body-writer-for-java-class-java-util-arraylist-and-mime-media-type -t#answer-18240578)对我来说很完美 – user1079877

+0

这篇帖子的第三篇文章适用于我使用的版本3.0.19: http://stackoverflow.com/questions/14365515/resteasy-could-not-find-writer- for-content-type-application-json-type –

回答

5

终于解决了它使用Gson library而不是依靠json。 也没有包装在通用实体中。这是工作的代码

@GET 
@Path("/{userName}/questions") 
public Response getUserQuestions(@PathParam("userName") String userName){    
    UserDAO userDAO = new UserDAO();   
    List<Question> questions = userDAO.getQuestionsByUserName(userName);   
    Gson gson = new GsonBuilder().setExclusionStrategies(new UserQuestionsExclStrat()).create(); //.serializeNulls() 
    String json = gson.toJson(questions); 
    System.out.println(json); 
    return Response.status(200).entity(json).build(); 
} 

必须使用排除策略,以避免循环参考。这里是链接为:stackoverflow error during json conversion (hibernate bi-directional mapping)

5

面对同样的问题,通过添加类@XmlRootElement的ArrayList中用于解决

0

通过添加这个依赖关系,我能够解决这个问题。

<dependency> 
    <groupId>org.glassfish.jersey.media</groupId> 
    <artifactId>jersey-media-json-jackson</artifactId> 
    <version>2.10.1</version> 
</dependency> 
相关问题