鸿蒙Next版,读取本地json文件数据

413 阅读1分钟

1:先在resource/rawfile下创建json文件,
abconfig.json

{
  "buildMode": "debug"
}

2:读取

import { util } from '@kit.ArkTS';

export class FileUtils{

  getJsonFileData<T>(context:Context,fileName:string):Promise<T>{
   return new Promise((resolve: Function, reject: Function) => {
      context.resourceManager.getRawFileContent(fileName, (err, value) => {
        if (!!err) {
          reject(err)
          return
        }
        let textDecoder = util.TextDecoder.create("utf-8", {
          ignoreBOM: true
        });
        let result = textDecoder.decodeToString(value, {
          stream: false
        });
        let bean: T = JSON.parse(result);
        console.error(JSON.stringify(bean))
        resolve(bean)
      });
    });
  }
}
export const fileUtils:FileUtils = new FileUtils();

3:使用

//Json
export class TestBean {
  buildMode: string = '';
}

//EntryAbility
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
  // AppStorageV2.connect(UIContext,'Context', this.context);
  fileUtils.getJsonFileData<TestBean>(this.context, 'abconfig.json')
    .then((bean: TestBean) => {
      console.error('json buildMode -> ' + bean.buildMode)
    }).catch((err: BusinessError) => {
    console.error(err.message);
  })
}


//Page
@Entry
@Component
struct TestPage {
  build() {
    Text(this.title).onClick(() => {
      fileUtils.getJsonFileData<TestBean>(getContext(this), 'abconfig.json')
        .then((bean: TestBean) => {
          console.error(bean.buildMode)
        }).catch((err: BusinessError) => {
        console.error(err.message);
      })
    })
  }
}