HarmonyOS 鸿蒙Next 读取不出本地JSON文件内容
json文件内容如下:
{
"data": [
{
"name": "北京市",
"city": [
{
"name": "北京市",
"area": [
"东城区",
"西城区",
"崇文区",
"宣武区",
"朝阳区",
"丰台区",
"石景山区",
"海淀区",
"门头沟区",
"房山区",
"通州区",
"顺义区",
"昌平区",
"大兴区",
"平谷区",
"怀柔区",
"密云县",
"延庆县"
]
}
]
},
{
"name": "天津市",
"city": [
{
"name": "天津市",
"area": [
"和平区",
"河东区",
"河西区",
"南开区",
"河北区",
"红桥区",
"塘沽区",
"汉沽区",
"大港区",
"东丽区",
"西青区",
"津南区",
"北辰区",
"武清区",
"宝坻区",
"宁河县",
"静海县",
"蓟 县"
]
}
]
},
}
interface province_type{
name:string
city:Array<city_type>
}
interface city_type{
name:string
area:Array<string>
}
export class provinceModel {
data: Array<province_type> = [];
async getjsonfile(context: common.UIAbilityContext) {
// 从资源管理器中获取名为 'province.json' 的文件内容
let getjson = await context.resourceManager.getRawFileContent('province.json');
console.log('getjson:'+getjson);
// 创建 TextDecoderOptions 对象,设置 ignoreBOM 为 true
let textDecoderOptions: util.TextDecoderOptions = { ignoreBOM: true };
// 创建 TextDecoder 实例,指定编码为 'utf-8' 并传入 TextDecoderOptions
let textDecoder = util.TextDecoder.create('utf-8', textDecoderOptions);
// 使用 TextDecoder 的 decodeWithStream 方法解码 JSON 数据,设置 stream 为 false 以一次性解码整个数据
let result = textDecoder.decodeToString(getjson, { stream: false });
//下面decodeWithStream在API 12 下不能使用
//let result = textDecoder.decodeWithStream(getjson, { stream: false });
// 将解码后的字符串解析为 JSON 对象
console.log('1234result:'+result)
let Bookmodel: provinceModel = JSON.parse(result);
// 将解析得到的 BookModel 对象中的 data 属性赋值给类的 Booklist 属性
this.provinceList =Bookmodel.data;
}
getjson获取到的数据如下
但是往下
获取不到数据了?
请问是什么原因?
更多关于HarmonyOS 鸿蒙Next 读取不出本地JSON文件内容的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
getRawFileContent 返回的是Promise<Uint8Array>, decodeToString这里需要的是Unit8Array,两边对不上,需要改一下。你可以改成
context.resourceManager.getRawFileContent('province.json').then((getjson) => {
//todo
});
或者
let getjson = context.resourceManager.getRawFileContentSync('province.json'),
控制台有日志打印字数限制,可以debug看下数据,或者循环打印,改了以后就可以看到打印日志了
更多关于HarmonyOS 鸿蒙Next 读取不出本地JSON文件内容的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中读取本地JSON文件内容,你可以采用以下步骤:
-
文件路径确认:确保你的JSON文件路径正确,且应用具有访问该路径的权限。文件应放置在应用的私有存储目录中,如
files
或cache
目录。 -
使用文件流读取:通过
FileInputStream
或FileReader
类来打开并读取文件内容。示例代码如下:
// 示例代码(注意:鸿蒙开发中不直接使用Java API,此为示意)
// 假设文件路径为 "/data/user/0/你的包名/files/example.json"
FileInputStream fis = openFileInput("example.json");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line);
}
br.close();
isr.close();
fis.close();
String jsonContent = sb.toString();
在鸿蒙系统中,应使用相应的文件读取API(如FileIoManager
等)来替代Java的FileInputStream
等类,但核心逻辑相似。
- JSON解析:使用鸿蒙提供的JSON解析库(如
ohos.json
包)来解析读取到的JSON字符串。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。