将Java对象编码为确定性标识符

时间:2018-11-20 22:37:04

标签: java json encoding base64 gzip

将Java对象编码为确定性标识符的最佳方法是什么,我可以将其解码为该对象?

基本上,我想在响应中将此消息发送给客户端,以便他们可以报告有关此标识符的指标。因此,该标识符必须是确定性的。我研究了JSON序列化-> GZIP压缩-> base64字符串。但是,我担心json对象中的字段将不会始终保持相同的顺序,从而每次都会导致一组不同的字节。有没有办法保留此结构顺序?如果没有,还有更好的方法吗?

另一个相关的问题是,是否存在一种方法来生成字符数最少的字符串,因为我们对生成的标识符有严格的空间要求。

1 个答案:

答案 0 :(得分:0)

我不知道将整个对象作为字节存储在数据库中是否是一个好主意(我不确定它的优良作法),但是如果您确实想要,我认为最直接的路径是将对象转换为字节数组,然后将字节数组转换为base64编码的字符串。

已经有一篇文章讨论将对象转换为字节数组的问题(我很确定每次字节顺序都相同): Java Serializable Object to Byte Array

还有一篇文章涉及将字节数组转换为base64编码的字符串的问题: How do I convert a byte array to Base64 in Java?

希望这会有所帮助。

编辑:

没有看到最后一部分,但是通常您会使用诸如Sha256之类的哈希函数来获取某些数据的确定性标识符。