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的问题
171浏览 • 1回复 待解决
如何实现crash堆栈抓取、crash回调
1851浏览 • 1回复 待解决
HarmonyOS stringify是否支持对Map的解析
90浏览 • 1回复 待解决
HarmonyOS 关于crash问题
411浏览 • 1回复 待解决
HarmonyOS taskpool使用crash
1435浏览 • 2回复 待解决
HarmonyOS 类似h5中qs.stringify
30浏览 • 1回复 待解决
HarmonyOS ArrayList 遇到问题
57浏览 • 1回复 待解决
HarmonyOS crash异常无法上报问题
43浏览 • 1回复 待解决
HarmonyOS 唤起自定义弹窗crash
30浏览 • 1回复 待解决
HarmonyOS ArrayList 遇到问题?
221浏览 • 0回复 待解决
HarmonyOS bindPopup遇到问题
71浏览 • 1回复 待解决
HarmonyOS crash日志如何定位问题代码
609浏览 • 1回复 待解决
flutter混合遇到的问题
331浏览 • 1回复 待解决