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

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

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
相关问题
自定义如何实现序列化
321浏览 • 1回复 待解决
如何实现一个自定义样式toast提示
187浏览 • 1回复 待解决
如何封装一个自定义Dialog对话框
442浏览 • 1回复 待解决
如何自定义函数创建一个UI组件
327浏览 • 1回复 待解决
如何在全局实现一个自定义dialog弹窗
583浏览 • 1回复 待解决
如何判断一个对象是否对象数组
446浏览 • 1回复 待解决
是否支持自定义装饰器
326浏览 • 1回复 待解决
ArkTS是否支持自定义装饰器?
143浏览 • 1回复 待解决
PersistentStorage如何持久一个对象?
770浏览 • 1回复 待解决
Grid组件scrollBar是否支持自定义
420浏览 • 1回复 待解决
鸿蒙如何自定义字体文件
17422浏览 • 1回复 待解决
ArkTS如何自定义资源文件
397浏览 • 1回复 待解决
自定义组件如何添加图片?
857浏览 • 1回复 待解决
自定义组件是否支持renderFit属性
127浏览 • 1回复 待解决