Кодер / декодер BSON в Java довольно тривиален. Следующий фрагмент кода из моего приложения, так что это в Scala. Я уверен, что вы могли бы легко создать из него реализацию Java.
import org.bson.BSON
import com.mongodb.{DBObject, DBDecoder, DefaultDBDecoder}
def convert(dbo: DBObject): Array[Byte] =
BSON.encode(dbo)
// NB! this is a stateful object and thus it's not thread-safe, so have
// to create one per decoding
def decoder: DBDecoder = DefaultDBDecoder.FACTORY.create
def convert(data: Array[Byte]): DBObject =
// NOTE: we do not support Ref in input, that's why "null" for DBCollection
decoder.decode(data, null)
def convert(is: InputStream): DBObject =
// NOTE: we do not support Ref in input, that's why "null" for DBCollection
decoder.decode(is, null)
Единственное важное замечание: экземпляр DBEncoder
имеет внутреннее состояние, которое он (повторно) использует во время декодирования, поэтому он не является поточно-ориентированным. Все должно быть хорошо, если вы декодируете объекты один за другим, но в противном случае вам лучше создать экземпляр для каждого сеанса декодирования.