HarmonyOS 遇到JSON.stringify crash

下面是我们这边一处代码,计算obj对象hashcode,这里的obj就是Component,然后现在有部分情况下会crash

function getObjectHashCode(obj: object): number { 
  const str = JSON.stringify(obj); 
  let hash = 0; 
  for (let i = 0; i < str.length; i++) { 
    const character = str.charCodeAt(i); 
    hash = (hash << 5) - hash + character; 
    hash |= 0; // 将hash转换为32位整数 
  } 
  return hash; 
}
HarmonyOS
2024-08-03 11:17:50
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
hmogy

使用json.stringify 如果对象中包含了循环引用或者无法被序列化的内容,如循环引用、函数等,就会导致json抛出异常

此外,由于对象的属性顺序是不固定的,因此在对对象进行 JSON 序列化时会导致具有相同属性,但顺序不同的对象得到不同的字符串表示,进而得到不同的哈希码,不同的对象也可能有相同的哈希值,这可能会导致一些情况下哈希码计算出错。

建议用其他的哈希算法来计算对象的哈希值,以避免依赖于 JSON 序列化过程中可能出现的问题

crypto-js的一些hash算法可参考https://gitee.com/openharmony-sig/crypto-js#https://gitee.com/link?target=https%3A%2F%2Fcryptojs.gitbook.io%2Fdocs%2F

分享
微博
QQ
微信
回复
2024-08-03 17:13:18
相关问题
HarmonyOS JSON.stringify一个hasmap的问题
1053浏览 • 1回复 待解决
HarmonyOS stringify是否支持对Map的解析
1169浏览 • 1回复 待解决
HarmonyOS taskpool使用crash
2748浏览 • 2回复 待解决
如何实现crash堆栈抓取、crash回调
3057浏览 • 1回复 待解决
HarmonyOS 关于crash问题
1686浏览 • 1回复 待解决
HarmonyOS RN ScrollView scrollTo Crash
1063浏览 • 1回复 待解决
HarmonyOS 类似h5中qs.stringify
824浏览 • 1回复 待解决
HarmonyOS FrameNode手势检测crash
856浏览 • 1回复 待解决
HarmonyOS RN相关界面crash
930浏览 • 1回复 待解决
HarmonyOS crash异常无法上报问题
1237浏览 • 1回复 待解决