非关系型数据库如何存储对象或者列表容器类?

虽然官方已经提供了k-v键值对类型的非关系型数据库,但是存储的类型是Uint8Array|string|number|boolean,请问我想存储一个容器对象,比如数组、或者一个对象,是否有现成的序列化api可以将对应对象或者容器转成Uint8Array类型进行存储?

阅读 499
1 个回答

解决方案

class TestClass0 {
  number: Number = 1; s
  tr: 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%')
}
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进