Джонго и Джерси

Мой запрос возвращает элементы Iterable, и теперь я хочу вернуть его пользователю в формате JSON, но Джерси не может его преобразовать. он говорит:

Не найден модуль записи тела сообщения для класса Java org.jongo.MongoIterator, типа Java java.lang.Iterable и приложения/xml типа мультимедиа MIME.

    @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;
}

Нужно ли мне преобразовать его в тип списка или есть другой эффективный способ сделать это?


person Abzal Kalimbetov    schedule 04.07.2013    source источник


Ответы (1)


Вы можете использовать метод newArrayList из библиотека Guava

@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);
}

или скопируйте iterable в новый список, см. https://stackoverflow.com/a/10117051/122975 для получения дополнительной информации.

Кстати, вам не следует создавать экземпляр Jongo каждый раз, когда вы обрабатываете новый запрос.

person Benoît Guérout    schedule 04.07.2013
comment
хм, это не эффективно, не так ли? - person Abzal Kalimbetov; 05.07.2013