2015-09-16 5 views
2

Мне нужно преобразовать сериализованный объект Java (получить из Redis) в Java-модель, которая расширяет com.mongodb.BasicDBObject (mongo-java-driver).Преобразование Redis ByteString в BasicDBObject

class Member extends BasicDBObject { 
    public Member(DBObject doc) { 
     super(doc.toMap()); 
    } 
    public Member(BasicDBObject doc) { 
     super(doc); 
    } 
    ... 
} 

Что я получил от Redis в форме ByteString.

В общем, мне нужно преобразовать байтовой строки -> BasicDBObject

ответ

1

Вы должны использовать промежуточную модель упорствовать модели. База MongoDB BasicDBObject s на LinkedHashMap, но есть хорошая вероятность, что вы получите внутренние структуры данных, которые не являются Java-сериализуемыми.

Ни DBObject и не BSONObject распространению Serializable. Я предлагаю вам хранить JSON в Redis. Ярлык может содержать BSON вместо JSON в Redis (см. BasicBSONEncoder#encode и BasicBSONDecoder#readObject).

0

@ mp911de Вы правы. Хорошо, что DBObject и BSONObject не расширяют Serializable. Другими словами, нет необходимости писать десериализатор для DBObject/BSONObject. Я нашел решение:

ByteString из Redis -> byte array -> Object -> cast to my class Member.

Смежные вопросы