0

我的查询返回 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 类型还是有其他有效的方法可以做到这一点?

4

1 回答 1

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。

于 2013-07-04T09:08:03.193 回答