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
相关问题
如何实现crash堆栈抓取、crash回调
1662浏览 • 1回复 待解决
HarmonyOS taskpool使用crash
1214浏览 • 2回复 待解决
HarmonyOS crash日志如何定位问题代码
357浏览 • 1回复 待解决
HarmonyOS有防CPP crash的具体方案吗
237浏览 • 1回复 待解决
DFX-crash定位定界工具
531浏览 • 1回复 待解决
尝试获取Har context,app crash
1667浏览 • 1回复 待解决
HarmonyOS 使用MMKV库时遇到Warning
270浏览 • 1回复 待解决
app启动crash报错Error message:MainPage:
1634浏览 • 1回复 待解决
应用导航设计遇到的问题
168浏览 • 1回复 待解决
HarmonyOS json解析异常
320浏览 • 1回复 待解决
DevEco补全问题,有遇到的吗?
6243浏览 • 1回复 待解决
app启动时加在so库crash
685浏览 • 1回复 待解决