HarmonyOS 鸿蒙Next HarmonyOS 鸿蒙Next 后台历史接口返回json数据key不一定,无法写为model形式,请问如何能解析其数据

HarmonyOS 鸿蒙Next HarmonyOS 鸿蒙Next 后台历史接口返回json数据key不一定,无法写为model形式,请问如何能解析其数据 后台历史接口返回json数据key不一定,无法写为model形式,请问如何能解析其数据

移动办公有一个全行移动端移动办公及桌面端办公中断均在使用接口现在返回数据格式如下:

{
"subUser1": {
"name": "西藏分行_人力资源部_处室管理员",
"remark": "",
"id": "54e02"
},
"subUser2": {
"name": "移动办公测试用子账号",
"remark": null,
"id": "mac_test"
}
。。。
}

其中 subUser1,subUser2为名字不定,且数量不定的key,即可能有subUser3、subUser4、otherUser5、otherUser6 等等情况。请问有办法遍历获取所有key对应的value么?由于该功能现在全行使用中,为了鸿蒙更改接口形式会影响全行所有用户的使用


更多关于HarmonyOS 鸿蒙Next HarmonyOS 鸿蒙Next 后台历史接口返回json数据key不一定,无法写为model形式,请问如何能解析其数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

参考如下方法

export class userInfo {
  name:string = ''
  remark:string = ''
  id:string = ''
}
aboutToAppear(): void {
    let str = '{"subUser1": { "name" : "西藏分行_人力资源部_处室管理员","remark": "","id": "54e02"},"subUser2": { "name" : "移动办公测试用子账号","remark": "","id": "12345ed"},"subUser3": { "name" : "江苏分行柜台","remark": "1111","id": "76ff23"}}'
    let jsonRecord: Record<string, userInfo> = JSON.parse(str) as Record<string, userInfo>;
    Object.keys(jsonRecord).forEach(key => {
      console.log(key, JSON.stringify(jsonRecord[key]));
    })
  }

打印

8-21 11:27:23.993   6247-6247    A03d00/JSAPP                   com.examp...tion0708  I     subUser1 {"name":"西藏分行_人力资源部_处室管理员","remark":"","id":"54e02"}
08-21 11:27:23.993   6247-6247    A03d00/JSAPP                   com.examp...tion0708  I     subUser2 {"name":"移动办公测试用子账号","remark":"","id":"12345ed"}
08-21 11:27:23.993   6247-6247    A03d00/JSAPP                   com.examp...tion0708  I     subUser3 {"name":"江苏分行柜台","remark":"1111","id":"76ff23"}

更多关于HarmonyOS 鸿蒙Next HarmonyOS 鸿蒙Next 后台历史接口返回json数据key不一定,无法写为model形式,请问如何能解析其数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,如果后台接口返回的JSON数据key不确定,无法直接映射为固定的model形式,可以使用JsonObjectJsonArray来动态解析数据。JsonObjectJsonArray是鸿蒙提供的轻量级JSON解析工具,能够灵活处理不固定结构的JSON数据。

首先,使用JsonUtil将JSON字符串转换为JsonObjectJsonArray对象。然后,可以通过getValue方法获取具体的值,或者遍历JsonObject的key集合来动态处理数据。例如:

import jsonutil from '@ohos.jsonutil';

let jsonString = '{"key1":"value1", "key2":"value2"}';
let jsonObject = jsonutil.parse(jsonString) as jsonutil.JsonObject;

// 遍历所有key
for (let key of jsonObject.keys()) {
    let value = jsonObject.getValue(key);
    console.log(`Key: ${key}, Value: ${value}`);
}

如果JSON数据是一个数组,可以使用JsonArray来解析:

let jsonArrayString = '[{"key1":"value1"}, {"key2":"value2"}]';
let jsonArray = jsonutil.parse(jsonArrayString) as jsonutil.JsonArray;

for (let i = 0; i < jsonArray.length; i++) {
    let item = jsonArray.getValue(i) as jsonutil.JsonObject;
    // 处理每个item
}

这种方式可以灵活应对JSON数据中key不固定的情况,无需预先定义model结构。

回到顶部