Конечные нули в байтовом массиве из RawBsonDocument.getByteBuffer (). Array () в org.Bson - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь закодировать организацию Json JSONObject в байт [] формата BSON. Однако я заметил, что в результирующем байте [] есть завершающие нули. Хотя эти нули не представляют проблемы при повторной десериализации байта [] в JSON, они, тем не менее, занимают много места. Мой код следующий:

#deserializing incoming message
RawBsonDocument bson = new RawBsonDocument((byte[])incomingBson);
json = new JSONObject(bson.toJson());

#serializing response to **bson format**
RawBsonDocument bsonDoc = RawBsonDocument.parse(json.toString());
responseBson = bsonDoc.getByteBuffer().array();

Простое обрезание байта [] от всех конечных нулей не вариант, так как byte [] вполне может иметь действительные нули в конце, которые не добавлены сериализацию.

Edit 1

Я решил проблему с помощью следующего кода:

RawBsonDocument bsonDoc = RawBsonDocument.parse(json.toString());
responseBson = Arrays.copyOfRange(bsonDoc.getByteBuffer().array(), 0, bsonDoc.getByteBuffer().limit());

Я считаю, что это должно быть больше элегантный ответ

...