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

server/2024/12/27 0:10:26/

RawJSON_0">【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.ppmy.cn/server/153117.html

相关文章

常用git命令大全

目录 前言: 初始化仓库: 配置: 查看仓库文件: 查看仓库配置: 添加文件: 提交更改: 查看状态: 查看日志: 回滚: 分支管理: 切换分支&a…

东子生物完成A轮战略融资,数字商品交易全新升级为数商时代

2024年11月23日,东子生物数字时代正式上线,标志着公司全面迈入“数商时代”,作为国内领先的生物科技企业,东子生物在数字化浪潮中精准布局,以创新科技推动产业升级,以全新的思维引领健康产业,兼…

反汇编一个简单的C程序

基于最简单的代码示例,一步步分析每一段汇编代码,对于堆栈变化 一、编译C代码 int g(int x) {return x 3; } int f(int x) {return g(x); } int main(void) {return f(8) 1; }编译 gcc -S -o main.s main.c -m32得到汇编代码 g:pushl %ebpmovl …

Avalonia实例实战五:Carousel自动轮播图

文章目录 一、加载图片不使用avares:直接路径访问:使用avares:访问:二、使用Carousel控件官网示例:增加间隔3秒自动滑动三、使用自定义用户控件实现带RadioButton的轮播控件四、效果一、加载图片 将三张Png图片加载到项目中,在访问前,必须将路径添加到资源中,在csprojec…

GitHub 桌面版配置 |可视化界面进行上传到远程仓库 | gitLab 配置【把密码存在本地服务器】

🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录 桌面版安装包下载clone 仓库操作如下GitLab 配置不再重复输入账户和密码的两个方…

自动驾驶---Parking端到端架构

​​​​​​1 背景 自动泊车也是智能驾驶低速功能中比较重要的一部分,低速功能其中还包括记忆泊车,代客泊车等。传统的泊车算法通常使用基于规则或者搜索优化的方案来实现。然而,由于算法的复杂设计,这些方法在复杂的泊车场景中效…

算法day_5 字符串处理专题

碎碎念 这是我在2024年12月21日的算法练习,加油! 题目一:不常见单词查找 884. 两句话中的不常见单词 题目描述 给定两个句子 s1 和 s2,找出仅在其中一个句子中出现一次的单词。也就是说,这些单词在两个句子中只出现…

【YashanDB知识库】Oracle pipelined函数在YashanDB中的改写

本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7802940.html?templateId1718516 【问题分类】功能使用 【关键字】pipelined 【问题描述】 Oracle PL/SQL中包含pipelined函数的对象迁移到YashanDB会出现不兼容现象。 【问题原因分…