Кодирование объекта Java в детерминированный идентификатор - PullRequest
0 голосов
/ 21 ноября 2018

Каков наилучший способ кодирования Java-объекта в детерминированный идентификатор, который я могу декодировать в этот объект?

В основном я хочу отправить это восходящее сообщение клиентам в нашем ответе, чтобы они могли сообщать о показателях по этомуидентификатор.Так что этот идентификатор должен быть детерминированным.Я посмотрел в сериализации JSON -> сжатие GZIP -> строка base64.Однако меня беспокоит, что поля в объекте json не всегда будут поддерживать один и тот же порядок, что каждый раз приводит к разному набору байтов.Есть ли способ сохранить этот порядок структуры?Если нет, то есть ли лучший способ сделать это?

Другой связанный с этим вопрос заключается в том, существует ли метод, который создает строку с наименьшим количеством символов, поскольку у нас есть жесткие требования к месту для получающегося идентификатора.

1 Ответ

0 голосов
/ 21 ноября 2018

Я не знаю, если это хорошая идея, чтобы сохранить весь объект в виде байтов в базе данных (я не уверен, что это хорошая практика), но если вы действительно хотите, я думаю, что самый простой путь - преобразовать ваш объект в байтмассив, а затем преобразовать байтовый массив в строку в кодировке base64.

Уже есть пост, посвященный вопросу преобразования объектов в байтовые массивы (я уверен, что порядок байтов будет одинаковым каждый раз): Сериализуемый Java-массив в байтовый массив

Существует также пост, посвященный вопросу преобразования байтовых массивов в строку в кодировке base64: Как преобразовать байтовый массив в Base64 в Java?

Надеюсь, это поможет..

Редактировать:

Не видел последнюю часть, но обычно вы использовали бы хеш-функции, такие как Sha256, чтобы получить детерминированный идентификатор некоторых данных.

...