我需要将序列化的Java对象(从Redis获取)转换为扩展com.mongodb.BasicDBObject的Java模型(mongo-java-driver)。
class Member extends BasicDBObject {
public Member(DBObject doc) {
super(doc.toMap());
}
public Member(BasicDBObject doc) {
super(doc);
}
...
}我从Redis那里得到的是ByteString格式。
总之,我需要将ByteString -> BasicDBObject
发布于 2015-09-16 15:24:34
您应该使用中间模型来持久化您的模型。MongoDB的BasicDBObject是基于LinkedHashMap的,但是很有可能最终得到的内部数据结构是不可序列化的。
DBObject和BSONObject都不会扩展Serializable。我建议您将JSON存储在Redis中。一种快捷方式是在Redis中存储BSON而不是JSON (参见BasicBSONEncoder#encode和BasicBSONDecoder#readObject)。
发布于 2015-09-17 14:54:24
@mp911de你是对的。好消息是DBObject和BSONObject没有扩展Serializable。换句话说,不需要为DBObject/BSONObject编写反序列化程序。我找到了一个解决方案:
来自Redis的ByteString ->字节数组->对象->强制转换为我的类成员。
https://stackoverflow.com/questions/32600992
复制相似问题