我的查询返回Iterable元素,现在我想以JSON格式将其返回给用户,但Jersey无法转换它。它说:
未找到Java类org.jongo.MongoIterator和Java类型java.lang.Iterable以及MIME媒体类型application / xml的消息正文编写器
@GET
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public Iterable<Complex> getISS(){
DB db = ConnectionHelper.client.getDB("testdb");
Jongo jongo = new Jongo(db);
MongoCollection complex = jongo.getCollection("COMPLEX");
Iterable<Complex> all = complex.find().as(Complex.class);
return all;
}
我是否需要将其转换为List类型或者还有其他有效的方法吗?
答案 0 :(得分:3)
您可以使用Guava库
中的newArrayList方法@GET
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public Iterable<Complex> getISS(){
DB db = ConnectionHelper.client.getDB("testdb");
Jongo jongo = new Jongo(db);
MongoCollection complex = jongo.getCollection("COMPLEX");
Iterable<Complex> all = complex.find().as(Complex.class);
return Lists.newArrayList(all);
}
或将可迭代复制到新列表中,有关详细信息,请参阅https://stackoverflow.com/a/10117051/122975
顺便说一下,每次处理新请求时都不应该实现Jongo。