扫码关注官方订阅号
走同样的路,发现不同的人生
这是fastjson的结果。
这个解析后,就不行了,就terminalInfo里面的信息换一下顺序,就不行了,有没有好的办法?
顺序变了,string就变了,MD5自然不同。需要根据key-value进行重排。某些JSON解析器会排序,或者自己实现一个。如果JSON解析器未排序,可以遍历key-value进行重排。
首先,hash 值并不能保证唯一,原文相同,hash 值一定相同,但 hash 值相同,原文并不一定相同。所以使用的时候要谨慎。
另外,通过 toJSONString() 的方法来计算 hash 可能会因为属性顺序不一致造成 hash 值不一致,而且 toJSONString 本身效率也不高。你可以考虑一下组合元素(成员) hashCode() 的方法来计算 hash 值。或者自己写一个算法来递归遍历各层次来计算。
toJSONString()
toJSONString
hashCode()
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这是fastjson的结果。
这个解析后,就不行了,就terminalInfo里面的信息换一下顺序,就不行了,有没有好的办法?
顺序变了,string就变了,MD5自然不同。需要根据key-value进行重排。某些JSON解析器会排序,或者自己实现一个。如果JSON解析器未排序,可以遍历key-value进行重排。
首先,hash 值并不能保证唯一,原文相同,hash 值一定相同,但 hash 值相同,原文并不一定相同。所以使用的时候要谨慎。
另外,通过
toJSONString()
的方法来计算 hash 可能会因为属性顺序不一致造成 hash 值不一致,而且toJSONString
本身效率也不高。你可以考虑一下组合元素(成员)hashCode()
的方法来计算 hash 值。或者自己写一个算法来递归遍历各层次来计算。