当前位置: 首页 > article >正文

【HarmonyOS】如何读取Raw下的JSON文件内容

【HarmonyOS】如何读取Raw下的JSON文件内容

一、问题背景:

读取工程中/resources下json文件,json文件推荐放在rawfile路径下,通过getRawFileContent接口访问。但是通过该接口拿到的是Uint8Array类型数据,那怎么拿到JSON的文本内容?
在这里插入图片描述

二、解决方案:

1.首先通过getRawFileContent拿到文件的字节流内容。

  getContext().resourceManager.getRawFileContent("vibration.json")

2.通过util.TextDecoder设置编码,解析字节流内容转化为string文本。

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

        let decoder = util.TextDecoder.create('utf-8');
        let json = decoder.decodeToString(rawFile);

三、源码示例:

在这里插入图片描述
JSONTestPage.ets

import { BusinessError } from '@kit.BasicServicesKit';
import { util, buffer } from '@kit.ArkTS';



struct JSONTestPage {

  private TAG: string = "JSONTestPage";
   showText: string = "";

  aboutToAppear(): void {
    this.getRawJson();
  }

  /**
   * 获取JSON
   */
  private getRawJson(){
    try {
      getContext().resourceManager.getRawFileContent("vibration.json").then((value: Uint8Array) => {
        let rawFile = value;
        let decoder = util.TextDecoder.create('utf-8');
        let json = decoder.decodeToString(rawFile);
        console.info(this.TAG, "json: " + json);
        this.showText = json;
      }).catch((error: BusinessError) => {
        console.error("getRawFileContent promise error is " + error);
      });
    } catch (error) {
      let code = (error as BusinessError).code;
      let message = (error as BusinessError).message;
      console.error(`promise getRawFileContent failed, error code: ${code}, message: ${message}.`);
    }
  }

  build() {
    Scroll(){
      Row() {
        Text(this.showText)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
    }
    .height('100%')
    .width('100%')
  }
}

在这里插入图片描述
vibration.json

{
  "MetaData": {
    "Create": "2023-01-09",
    "Description": "a haptic case",
    "Version": 1.0,
    "ChannelNumber": 1
  },
  "Channels": [
    {
      "Parameters": {
        "Index": 0
      },
      "Pattern": [
        {
          "Event": {
            "Type": "transient",
            "StartTime": 0,
            "Parameters": {
              "Frequency": 31,
              "Intensity": 100
            }
          }
        },
        {
          "Event": {
            "Type": "continuous",
            "StartTime": 40,
            "Duration": 54,
            "Parameters": {
              "Frequency": 30,
              "Intensity": 38,
              "Curve": [
                {
                  "Time": 0,
                  "Frequency": 0,
                  "Intensity": 0
                },
                {
                  "Time": 1,
                  "Frequency": 15,
                  "Intensity": 0.5
                },
                {
                  "Time": 40,
                  "Frequency": -8,
                  "Intensity": 1.0
                },
                {
                  "Time": 54,
                  "Frequency": 0,
                  "Intensity": 0
                }
              ]
            }
          }
        }
      ]
    }
  ]
}

http://www.kler.cn/a/457227.html

相关文章:

  • 【持续更新中】transformer详解和embedding大模型
  • 动手做计算机网络仿真实验入门学习
  • 电池放电仪在各领域的作用
  • 单词统计详解---pyhton
  • Unity Dots理论学习-2.ECS有关的模块(1)
  • Oracle复合索引规则指南
  • IP属地和所在地不一致什么意思?怎么换成另外一个地方的
  • 嵌入式小白
  • leetcode-----mysql
  • 【java基础】时间
  • WAV文件双轨PCM格式详细说明及C语言解析示例
  • 计算机图形学知识点汇总
  • 保险科技“数智化+”赋能险企高质量发展
  • 72.是否可以把所有Bean都通过Spring容器来管理?(Spring的applicationContext.xml中配置全局扫 描)
  • 基于Pycharm与数据库的新闻管理系统(2)Redis
  • 内网渗透思路amp;相关服务爆破以及提权
  • SpringBoot使用外置的Servlet容器(详细步骤)
  • CH340系列芯片驱动电路·CH340系列芯片驱动!!!
  • 鸿蒙next之如何实现防截屏功能
  • 在 CentOS 系统上安装 ClickHouse
  • Es搭建——单节点——Linux
  • 【FPGA】ISE13.4操作手册,新建工程示例
  • 嵌入式学习-硬件基础-Day02
  • 深入理解 Cookie 和 Session 在 Java Web 中的应用
  • Unity 实现Canvas显示3D物体
  • 18_HTML5 Web IndexedDB 数据库 --[HTML5 API 学习之旅]