HarmonyOS 鸿蒙Next关于@ObservedV2的类实例目前不支持使用JSON.stringify进行序列化的问题

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next关于@ObservedV2的类实例目前不支持使用JSON.stringify进行序列化的问题

关于这个问题,你们是怎么解决的?

  • @ObservedV2的类实例目前不支持使用JSON.stringify进行序列化。

2 回复

被@ObservedV2标记的类及字段,使用JSON.stringify之后字段名称都加上了“__ob_”开头的字段,导致无法反序列化回来 是这种情况嘛 关于序列化后会有__ob_前缀的问题,可以在序列前替换掉__ob_前缀。

解决方法一:

father: Father = new Father();
let a = JSON.stringify(this.father);

let b: Father = JSON.parse(a.replaceAll(/(__ob_)/g,''));

解决方法二:

father: Father = new Father();

let a = JSON.stringify(this.father);

let b: Father = JSON.parse(a);

// 遍历对象处理属性的名称

解决方法一只在类名、属性名和值不包含__ob_时适用,方法二比较麻烦。

HarmonyOS的@ObservedV2类实例设计用于响应式编程,通常用于UI框架中的数据绑定,其内部可能包含复杂的数据结构和监听器,这些都不适合直接通过JSON.stringify进行序列化。JSON.stringify主要用于处理简单数据结构,如对象、数组、字符串等,而复杂对象(如包含函数、循环引用或特定类实例)可能无法正确序列化。

针对@ObservedV2对象,建议通过手动提取需要序列化的数据字段,或者自定义序列化逻辑来转换数据。如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部