Вас может заинтересовать проект bson4jackson , который позволяет использовать привязку данных Jackson для работы с BSON (создавать POJO из BSON, писать как BSON) - тем более что Джексон также работает с JSON. Так что это позволит преобразование, как вы упомянули, просто используйте различные экземпляры ObjectMapper (один, который работает с JSON, другой с BSON).
С Джексоном вы можете работать либо с полными POJO (укажите желаемую структуру), либо с простыми картами, списками и так далее. Вам просто нужно указать, что печатать при привязке к типу (при записи тип определяется объектом, который вы передаете).