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

リスト型に変換する必要がありますか、それとも他に効果的な方法がありますか?

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

または iterable を新しいリストにコピーします。詳細については、 https: //stackoverflow.com/a/10117051/122975 を参照してください。

ところで、新しいリクエストを処理するたびに Jongo をインスタンス化しないでください。

于 2013-07-04T09:08:03.193 に答える