HarmonyOS 鸿蒙Next 读取本地的resources下json文件

发布于 1周前 作者 caililin 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 读取本地的resources下json文件

function getCityCode(context :Context){
try {
context.resourceManager.getRawFileContent(“cityCode.json”, (error: BusinessError, value: Uint8Array) => {
if (error != null) {
LogUtil.error("error is " + error);
} else {
let rawFile = value;
LogUtil.error(“value=====” + rawFile);
}
});
} catch (error) {
let code = (error as BusinessError).code;
let message = (error as BusinessError).message;
LogUtil.error(callback getRawFileContent failed, error code: ${code}, message: ${message}.);
}
}

请问一下这个结果,我要怎么转换成string

3 回复
{
  "CityCodeList":  [
    {
      "district_geocode":"110100",
      "district":"北京"
    },
    {
      "district_geocode":"110100",
      "district":"东城"
    },
    {
      "district_geocode":"110100",
      "district":"朝阳"
    }
  ]
}

export class CityCode{ CityCodeList:Array<CityCodeBean> = [] }

export class CityCodeBean { district_geocode: string = “” district: string = “” }

<span class="hljs-comment">//获取json数据</span>
<span class="hljs-keyword">let</span> context = getContext(<span class="hljs-keyword">this</span>) as common.UIAbilityContext;
<span class="hljs-keyword">let</span> value: <span class="hljs-built_in">Uint8Array</span> = await context.resourceManager.getRawFileContent(<span class="hljs-string">'testData.json'</span>);
<span class="hljs-keyword">let</span> citystr = buffer.from(value.buffer).toString();
console.debug(<span class="hljs-string">'testData='</span>,citystr)
<span class="hljs-keyword">let</span> cityObj:ESObject = <span class="hljs-built_in">JSON</span>.parse(citystr)
<span class="hljs-keyword">let</span> cityCodeList:CityCode = cityObj
console.debug(<span class="hljs-string">'testData'</span>,<span class="hljs-built_in">JSON</span>.stringify(cityCodeList.CityCodeList))

const jsonStr = buffer.from(value).toString('utf-8');

或者

const txtDecoder = util.TextDecoder.create('utf-8');

const jsonStr = txtDecoder.decodeToString(value);

在HarmonyOS鸿蒙Next系统中读取本地resources目录下的JSON文件,通常涉及以下几个步骤:

  1. 资源文件放置:确保你的JSON文件已正确放置在项目的resources目录下,且路径和文件名在代码中引用正确。

  2. 获取资源管理器:使用ResourceManager类来访问资源。ResourceManager是鸿蒙系统提供的一个用于访问应用资源(如字符串、图片、JSON等)的类。

  3. 加载JSON文件:通过ResourceManagergetRawFileEntry或类似方法获取文件的RawFileEntry对象,然后使用适当的IO操作(如BufferedReader)读取文件内容。

  4. 解析JSON:使用JSON解析库(如Gson或Jackson,或鸿蒙自带的JSON解析工具)将读取到的字符串内容解析为JSON对象或JSON数组,以便在代码中使用。

示例代码(简化):

ResourceManager resourceManager = ResourceTable.getAppResourceManager();
RawFileEntry rawFileEntry = resourceManager.getRawFileEntry("path/to/your/file.json");
// 使用InputStream或Reader读取文件内容
// 解析JSON内容

注意:实际代码中需要处理文件读取的异常,并确保路径和文件名正确无误。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部