Хотя похож на Преобразование DBObject в POJO с использованием драйвера Java MongoDB, мой вопрос отличается тем, что я специально заинтересован в использовании Jackson for отображение.
У меня есть объект, который я хочу преобразовать в экземпляр Mongo DBObject. Я хочу использовать структуру Jackson JSON для выполнения этой работы.
Один из способов сделать это:
DBObject dbo = (DBObject)JSON.parse(m_objectMapper.writeValueAsString(entity));
Однако, согласно https://github.com/FasterXML/jackson-docs/wiki/Presentation:-Jackson-Performance, это самый худший путь. Итак, я ищу альтернативу. В идеале я хотел бы подключиться к конвейеру генерации JSON и наполнить экземпляр DBObject
"на лету". Это возможно, потому что цель в моем случае - это экземпляр BasicDBObject
, который реализует интерфейс Map. Таким образом, он должен легко вписаться в трубопровод.
Теперь я знаю, что могу преобразовать объект в Map с помощью функции ObjectMapper.convertValue
, а затем рекурсивно преобразовать карту в экземпляр BasicDBObject
, используя конструктор карты типа BasicDBObject
. Но, я хочу знать, могу ли я удалить промежуточную карту и создать BasicDBObject
напрямую.
Заметим, что, поскольку a BasicDBObject
по существу является отображением, противоположное преобразование, а именно скаляр DBObject
в POJO, тривиально и должно быть достаточно эффективным:
DBObject dbo = getDBO();
Class clazz = getObjectClass();
Object pojo = m_objectMapper.convertValue(dbo, clazz);
Наконец, у моего POJO нет аннотаций JSON, и я бы хотел, чтобы это продолжалось.