Подтвердить что ты не робот

Преобразование DBObject в POJO с использованием Java-драйвера MongoDB

MongoDB, кажется, возвращает объекты BSON/JSON.

Я думал, что вы наверняка сможете получить значения как строки, int и т.д., которые затем могут быть сохранены как POJO.

У меня есть DBObject (созданный как объект BasicDBObject) в результате итерации по списку... (cur.next()).

Является единственным способом (кроме использования какой-либо структуры сохранения) для получения данных в POJO для использования JSON serlialiser/deserialiser?

Мой метод выглядит следующим образом:

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

EDIT: Это довольно очевидно, просто сделайте что-то вроде этого.

4b9b3361

Ответ 2

Пусть 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/

Ответ 3

Несмотря на поздний ответ, кто-то может найти это полезным.

Я использую 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);

}

Ответ 4

Вы можете использовать GSON библиотеку, предоставляемую Google. Вот пример . Есть много других api, которые вы можете использовать для преобразования json в pojo, например jettision api и т.д.