18

MongoDB は BSON/JSON オブジェクトを返すようです。

POJOとして保存できる文字列、intなどの値を取得できると思いました。

リストを繰り返し処理した結果、DBObject (BasicDBObject としてインスタンス化) ができました ... (cur.next())。

JSON シリアライザー/デシリアライザーを使用するために POJO にデータを取得する唯一の方法は (ある種の永続化フレームワークを使用する以外に) ですか?

私の方法は次のようになります。

public List<User> findByEmail(String email){
         DBCollection userColl;
         try {
            userColl = Dao.getDB().getCollection("users"); } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace();}
            DBCursor cur = userColl.find();
            List<User> usersWithMatchEmail = new ArrayList<User>();

            while(cur.hasNext()) {
               // this is where I want to convert cur.next() into a <User> POJO
               usersWithMatchEmail.add(cur.next());
            }
        return null;
    }

編集:これは明らかです。このようなことをしてください。

4

5 に答える 5

46

このためにすでに構築されているものを使用して、Spring に面倒な作業を任せてください...

本当のトリックは次のとおりです。mongoTemplate.getConverter().read(Foo.class, obj);

たとえば、DBCursor を使用する場合 -

while (cursor.hasNext()) { 
    DBObject obj = cursor.next(); 
    Foo foo = mongoTemplate.getConverter().read(Foo.class, obj);  
    returnList.add(foo); 
}

http://revelfire.com/spring-data-mongodb-convert-from-raw-query-dbobject/

于 2013-06-13T08:54:16.403 に答える
8

これに役立つ Java ライブラリがいくつかあります。

于 2011-10-07T07:34:35.330 に答える
6

遅い答えですが、誰かがこれを便利だと思うかもしれません。

私は GSON を使用しBasicDBObjectて、自分の POJOに変換します。TinyBlogDBObject

TinyBlogDBObject obj = convertJSONToPojo(cursor.next().toString());

private static TinyBlogDBObject convertJSONToPojo(String json){

    Type type = new TypeToken< TinyBlogDBObject >(){}.getType();

    return new Gson().fromJson(json, type);

}
于 2014-01-06T03:20:15.863 に答える
3

Google が提供するGSONライブラリを使用できます。これがそのです。jettision api など、json を pojo に変換するために使用できる他の多くの api があります。

于 2011-12-28T04:38:04.990 に答える