HarmonyOS 鸿蒙Next class转Map

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

HarmonyOS 鸿蒙Next class转Map

我想要 实现 Model类, 转HashMap,这个Object如何获取对应的值?

export class RequestParams {
modelToMap(): HashMap<string, string | object> {
const returnParams = new HashMap<string, string | object>();
Object.keys(this)
for (const key of Object.keys(this)) {
console.info(key : ${key} value : ${Object.getPrototypeOf(key)})
this.params.set(key, model[key])
)
;
}
return returnParams;
}
}

export class LoginModel extends RequestParams { /* 登录方式1-普通登录,2二维码登录,3手势登录,4指纹登录 / lgnMethCd: string =
‘1’; /
登录密码,Input输入内容 */certPwd: string = ‘’;
}

const loginModel: LoginModel =
new LoginModel();
///.createInstance();
loginModel.certPwd = ‘test’;
let p = loginModel.modelToMap()

//这个p变量是个HashMap

2 回复
代码如下:
export class RequestParams {
  modelToMap(): HashMap<string, string | object> {
    const returnParams = new HashMap<string, string | object>();
    Object.entries(this).forEach((item: [string, string | object]) => {
      returnParams.set(item[0], item[1])
    })
    return returnParams
  }
} 

在HarmonyOS鸿蒙系统中,将Next class对象转换为Map通常涉及反射机制和自定义的序列化逻辑,因为Java或Kotlin中的类实例不能直接转换成Map类型。以下是一个大致的实现思路:

  1. 定义Next Class:确保你的Next class具有合适的getter方法,以便能够访问其属性。

  2. 使用反射:通过Java反射API遍历Next class的所有字段,获取字段名和字段值。

  3. 构建Map:将字段名和字段值作为键值对存入一个Map中。可以使用HashMapLinkedHashMap以保持插入顺序。

  4. 处理复杂类型:如果Next class包含其他对象或集合类型,需要递归地应用相同的转换逻辑,或者将其转换为字符串表示。

  5. 封装转换逻辑:为了避免代码重复,可以将转换逻辑封装成一个静态方法或工具类。

示例代码框架(简化版):

Map<String, Object> map = new HashMap<>();
Field[] fields = NextClassInstance.getClass().getDeclaredFields();
for (Field field : fields) {
    field.setAccessible(true);
    try {
        map.put(field.getName(), field.get(NextClassInstance));
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
}

请注意,这段代码假设所有字段都是可访问的,并且没有处理复杂类型的嵌套转换。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部