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

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

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%') 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
分享
微博
QQ
微信
回复
2024-04-30 21:14:50
相关问题
自定义如何实现序列化
2941浏览 • 1回复 待解决
求大佬告知如何序列化对象
1937浏览 • 1回复 待解决
如何实现一个自定义询问框
1180浏览 • 1回复 待解决
如何定义一个未知类型对象
1737浏览 • 2回复 待解决
HarmonyOS 实现一个自定义分类列表
1176浏览 • 1回复 待解决
如何添加一个自定义代码文件
1214浏览 • 1回复 待解决
如何快速开发出一个自定义弹窗?
1115浏览 • 1回复 待解决
HarmonyOS 多一个自定义tabs冲突
955浏览 • 1回复 待解决
如何实现一个自定义样式toast提示
2756浏览 • 1回复 待解决