把一个自定义类型的对象存储到文件中,自定义对象是否支持序列化,后者如何将一个自定义对象序列化

把一个自定义类型的对象存储到文件中,自定义对象是否支持序列化,后者如何将一个自定义对象序列化

HarmonyOS
2024-04-29 22:36:29
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Sunny3141

参考代码:

class TestClass0 { 
  number: Number = 1; 
  str: string = '135'; 
} 
 
class TestClass { 
  number: Number = 0; 
  str: string = '123'; 
  boolVal: boolean = false; 
  testClass0: TestClass0 = new TestClass0(); 
} 
 
interface ClassTargetInterface<T> { 
  createClassTarget: () => T; 
} 
 
// str: JSON字段 
function parseToClass<T>(str: string | undefined | null, classTarget: ClassTargetInterface<T>): T | null { 
  if (!str || !classTarget) { 
    return null; 
  } 
  const classTar = classTarget.createClassTarget(); 
  const obj: Record<string, Object> = JSON.parse(str); 
  if (!obj) { 
    return null; 
  } 
  for (const key of Object.keys(obj)) { 
    (classTar as Record<string, Object>)[key] = obj[key]; 
  } 
  return classTar; 
} 
 
function TestFunc() { 
  // 对象转换为json 
  let testClass = new TestClass(); 
  let json: string = JSON.stringify(testClass); 
  console.log('testTag json: ' + json); 
 
  // json转换为对象 
  let targetClass: TestClass | null = parseToClass(json, { 
    createClassTarget: () => { 
      return new TestClass(); 
    } 
  }) 
  console.log('testTag targetClass: ' + JSON.stringify(targetClass)); 
  console.log(`testTag targetClass: ${testClass.str}, ${testClass.testClass0.str}`); 
} 
 
@Entry 
@Component 
struct Index { 
  @State message: string = 'Hello World'; 
 
  build() { 
    Row() { 
      Column() { 
        Text(this.message) 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
          .onClick(() => { 
            TestFunc(); 
          }) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}
分享
微博
QQ
微信
回复
2024-04-30 21:14:50
相关问题
自定义如何实现序列化
622浏览 • 1回复 待解决
求大佬告知如何序列化对象
294浏览 • 1回复 待解决
如何定义一个未知类型对象
224浏览 • 0回复 待解决
如何实现一个自定义样式toast提示
579浏览 • 1回复 待解决
如何自定义函数创建一个UI组件
596浏览 • 1回复 待解决
如何在全局实现一个自定义dialog弹窗
1056浏览 • 1回复 待解决
如何封装一个自定义Dialog对话框
845浏览 • 1回复 待解决
如何判断一个对象是否对象数组
725浏览 • 1回复 待解决
自定义弹窗自定义转场动画
390浏览 • 1回复 待解决
json 如何转换成自定义业务类对象
364浏览 • 1回复 待解决
是否支持自定义装饰器
673浏览 • 1回复 待解决
如何访问自定义文件
322浏览 • 1回复 待解决
PersistentStorage如何持久一个对象?
1207浏览 • 1回复 待解决
鸿蒙如何自定义字体文件
17788浏览 • 1回复 待解决
ArkTS是否支持自定义装饰器?
491浏览 • 1回复 待解决