HarmonyOS json怎么动态获取键值对应

一串json数据,接口会同时返回一个字段,比如返回marketName字段让我们去取这个key的value值,该怎么取?

HarmonyOS
6天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

参考代码如下:

// 1.定义类
class Person {
  name: string = 'xiaowang';
  age: number = 12;
  other: string = 'others'
}

// 2.定义方法
function getKeyValue(source: Object, target: Record<string, Object>) {
  for (let k of Object.keys(source)) {
    target[k] = Reflect.get(source, k);
    console.log(k+'='+target[k]);
  }
}

// 3.使用
const source: Person = new Person();
const target: Record<string, Object> = {};
getKeyValue(source, target);

具体class不能通过索引的形式访问obj[field],需要使用点操作符,target[k]需要进一步访问属性也可以采取上述方式,另外,还可以参考动态import,https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-dynamic-import-V5

// HAP's src/main/ets/pages/Index.ets
import('harlibrary').then((ns:ESObject) => {
  ns.Calc.staticAdd(8, 9);  // 调用静态成员函数staticAdd()
  let calc:ESObject = new ns.Calc();  // 实例化类Calc
  calc.instanceAdd(10, 11);  // 调用成员函数instanceAdd()
  ns.addHarlibrary(6, 7);  // 调用全局方法addHarlibrary()

  // 使用类、成员函数和方法的字符串名字进行反射调用
  let className = 'Calc';
  let methodName = 'instanceAdd';
  let staticMethod = 'staticAdd';
  let functionName = 'addHarlibrary';
  ns[className][staticMethod](12, 13);  // 调用静态成员函数staticAdd()
  let calc1:ESObject = new ns[className]();  // 实例化类Calc
  calc1[methodName](14, 15);  // 调用成员函数instanceAdd()
  ns[functionName](16, 17);  // 调用全局方法addHarlibrary()
});

另外可以直接赋值:const a: Person = Reflect.get(source, k);

分享
微博
QQ
微信
回复
6天前
相关问题
HarmonyOS JSON数据怎么获取
29浏览 • 1回复 待解决
HarmonyOS 动态设置json的key
88浏览 • 1回复 待解决
怎么动态组装一个json字符串?
314浏览 • 1回复 待解决
HarmonyOS 多层动态嵌套JSON如何取值
32浏览 • 1回复 待解决
HarmonyOS 如何获取对应的设备信息
50浏览 • 1回复 待解决
HarmonyOS 键值存储选型
263浏览 • 0回复 待解决
HarmonyOS JSON怎么转Map?
335浏览 • 1回复 待解决
HarmonyOS 如何动态获取当前页面
958浏览 • 1回复 待解决
VectorElement怎么定义对应的xml
8826浏览 • 2回复 待解决
HarmonyOS map转json怎么实现?
34浏览 • 1回复 待解决