将Java对象编码为确定性标识符的最佳方法是什么,我可以将其解码为该对象?
基本上,我想在响应中将此消息发送给客户端,以便他们可以报告有关此标识符的指标。因此,该标识符必须是确定性的。我研究了JSON序列化-> GZIP压缩-> base64字符串。但是,我担心json对象中的字段将不会始终保持相同的顺序,从而每次都会导致一组不同的字节。有没有办法保留此结构顺序?如果没有,还有更好的方法吗?
另一个相关的问题是,是否存在一种方法来生成字符数最少的字符串,因为我们对生成的标识符有严格的空间要求。
答案 0 :(得分:0)
我不知道将整个对象作为字节存储在数据库中是否是一个好主意(我不确定它的优良作法),但是如果您确实想要,我认为最直接的路径是将对象转换为字节数组,然后将字节数组转换为base64编码的字符串。
已经有一篇文章讨论将对象转换为字节数组的问题(我很确定每次字节顺序都相同): Java Serializable Object to Byte Array
还有一篇文章涉及将字节数组转换为base64编码的字符串的问题: How do I convert a byte array to Base64 in Java?
希望这会有所帮助。
编辑:
没有看到最后一部分,但是通常您会使用诸如Sha256之类的哈希函数来获取某些数据的确定性标识符。