奶油小蛋高|
HarmonyOS 5
@ObservedV2的类实例目前不支持使用JSON.stringify进行序列化。
@ObservedV2的类实例目前不支持使用JSON.stringify进行序列化。
但是我想拷贝这种类的对象要怎么做???
但是我想拷贝这种类的对象要怎么做???
2
浏览334 发布于2025-03-05 06:18广东
全部评论
最多点赞
最新发布
最早发布
JackieHou方式一:
收起
自动换行
深色代码主题
复制
JSON.stringify(objV2).replaceAll('__ob_','')方式二:使用class-transformer库
@Observed类的属性加上@Expose装饰器
收起
自动换行
深色代码主题
复制
//排除掉__ob_前缀的字段
let jsonStr = JSON.stringify(instanceToPlain(objV2,{ excludePrefixes:['__ob_']}))具体可参考我写的这篇文章:
2楼回复于2025-09-30 08:50 来自广东
锦鲤程序员关于这个是序列化后会有__ob_前缀的问题,可以在序列前替换掉__ob_前缀,demo如下
收起
自动换行
深色代码主题
复制
import { plainToClass } from "class-transformer";
@ObservedV2
class Son {
@Trace age: number = 100;
}
class Father {
son: Son = new Son();
}
@Entry
@Component
struct Index {
father: Father = new Father();
aboutToAppear(): void {
let a = JSON.stringify(this.father);
let b: Father = plainToClass(Father,this.father);
//{"son":{"__ob_age":100}}替换成{"son":{"age":100}}
console.log(JSON.stringify(convertKeysToCamelCase(this.father)))
}
build() {
Column() {
// 当点击改变age时,Text组件会刷新
Text(`${this.father.son.age}`)
.onClick(() => {
this.father.son.age++;
})
}
}
}
// utils.ets
export function underscoreToCamelCase(underscoreString:string):string {
// 捕获__ob_替换成''
return underscoreString.replace(/(__ob_)/g, (match:string, letter:string):string=> {
console.log(letter)
return '';
});
}
export function convertKeysToCamelCase(obj:ESObject):ESObject {
if (obj && typeof obj === 'object') {
const newObj:ESObject = {};
Object.keys(obj).forEach((key)=> {
if (obj.hasOwnProperty(key)) {
const newKey = underscoreToCamelCase(key);
newObj[newKey] = convertKeysToCamelCase(obj[key]);
}
})
return newObj;
} else {
return obj;
}
} 展开全部 
1楼回复于2025-03-06 03:34 来自广东
写回答
所见即所得编辑器, editor1
工具栏 撤消 快捷键 Ctrl+Z 重做 快捷键 Ctrl+Y 格式刷 快捷键 Ctrl+Shift+C 清除格式 加粗 快捷键 Ctrl+B 倾斜 快捷键 Ctrl+I 下划线 快捷键 Ctrl+U 删除线格式调整字号 文本颜色 背景颜色 增加缩进量 减少缩进量 左对齐 居中 右对齐 两端对齐段落间距行间距 项目列表 编号列表 插入水平线 块引用 插入/编辑超链接 快捷键 Ctrl+K 取消超链接 图片 表格 上传附件 导入Word 插入代码 MD编辑器 全屏模式
0/50000
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
- 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
- 如您发布的内容为转载内容,请注明内容来源。
我要提问题
相关推荐
换一批
1
HarmonyOS 使用json.parse转换后台发来的json导致状态管理失效的问题(API12+)
2
HarmonyOS ObserveV2装饰的类, 用JSON.stringfy转出来, 字段的key会多一个__ob_ (API12+)
3
HarmonyOS 是否在string.json中存储字符串数组?(API12+)
4
HarmonyOS 使用Util包JSON.stringify方法在转换数组对象时出现无法捕获异常 (API12+)
5
HarmonyOS 状态管理V2版本中提到“@ObservedV2的类实例目前不支持使用JSON.stringify进行序列化。”,那要如何实现序列化(API12+)
6
HarmonyOS 如何实现@ObservedV2的类实例序列化 (API12+)
7
HarmonyOS JSON解析出来的数据无法使用@ObservedV2和@Trace观察到数据和UI的变化 (API12+)
8
HarmonyOS 数组对象监听(API12+)
了解社区公约,与您携手共创和谐专业的开发者社区。




































苏公安网备 32011402010933号