我需要将序列化的Java Object(从Redis获取)转换为扩展com.mongodb.BasicDBObject(mongo-java-driver)的Java模型。
class Member extends BasicDBObject {
public Member(DBObject doc) {
super(doc.toMap());
}
public Member(BasicDBObject doc) {
super(doc);
}
...
}
我从Redis得到的是ByteString形式。
总之,我需要转换ByteString - > BasicDBObject
答案 0 :(得分:1)
您应该使用中间模型来保留模型。 MongoDB的BasicDBObject
基于LinkedHashMap
,但很有可能最终得到的内部数据结构不是Java可序列化的。
DBObject
和BSONObject
都不会延伸Serializable
。我建议你在Redis中存储JSON。快捷方式可以是在Redis中存储BSON而不是JSON(请参阅BasicBSONEncoder#encode
和BasicBSONDecoder#readObject
)。
答案 1 :(得分:0)
@ mp911de你是对的。好处是DBObject和BSONObject不扩展Serializable。换句话说,不需要为DBObject / BSONObject编写反序列化器。我找到了解决方案:
来自Redis的ByteString - >字节数组 - >对象 - >我的班级成员。