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

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

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

参考代码:

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
相关问题
自定义如何实现序列化
1965浏览 • 1回复 待解决
求大佬告知如何序列化对象
700浏览 • 1回复 待解决
如何实现一个自定义询问框
422浏览 • 1回复 待解决
HarmonyOS 实现一个自定义分类列表
272浏览 • 1回复 待解决
如何添加一个自定义代码文件
432浏览 • 1回复 待解决
如何快速开发出一个自定义弹窗?
376浏览 • 1回复 待解决
如何定义一个未知类型对象
864浏览 • 2回复 待解决
如何实现一个自定义样式toast提示
1955浏览 • 1回复 待解决
实现一个自定义动画,出现丢帧问题
387浏览 • 1回复 待解决
怎样实现一个自定义播放器?
361浏览 • 1回复 待解决
使用自定义函数创建一个UI组
355浏览 • 1回复 待解决
如何封装一个自定义Dialog对话框
2220浏览 • 1回复 待解决
如何判断一个对象是否对象数组
2430浏览 • 1回复 待解决
如何自定义函数创建一个UI组件
1822浏览 • 1回复 待解决
如何在全局实现一个自定义dialog弹窗
2821浏览 • 1回复 待解决