HarmonyOS 鸿蒙Next 转出的JSON对象里的Map<string, Object>类型数据如何用new Map<string,Object>()创建的变量接收

发布于 1周前 作者 caililin 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 转出的JSON对象里的Map<string, Object>类型数据如何用new Map<string,Object>()创建的变量接收

我用一个Interface对象接收JSON字符串转出的数据,这个Interface如下:
export interface YNActionMode {
id?: string
params?: Map<string, Object>
sortFieldMap?: Map<string, Object>
target?: string
}
此时params已经有值,外部我需要拷贝出一份params,然后我知道此时的params实际不是一个Map数据类型,而是一个Object对象,所以我用不了for of 或 forEach方法来遍历里面的key和value

于是我想用如下的变量来接收:
let newParams = new Map<string,Object>()
问题来了
我不能直接以这样来赋值
newParams = params
这样会使newParams也变为不是Map数据而是Object对象,导致我如果改变了newParams里的数据params里的也会被修改,这是不应该的

我想用遍历params的key-value的方式来为newParams赋值,如
newParams.set(key,value)

我该怎么做

2 回复

可以按照下面方法遍历对象 1、for…in 循环

const obj = {a: 1, b: 2, c: 3};
for (let key in obj) {
  console.log(key + ': ’ + obj[key]);
} 

2、Object.keys() 方法结合 forEach() 方法

const obj = {a: 1, b: 2, c: 3};

Object.keys(obj).forEach(function(key) {
    console.log(key + ': ’ + obj[key]);
}); 

3、Object.entries() 方法结合 forEach() 方法

const obj = {a: 1, b: 2, c: 3};
Object.entries(obj).forEach(function([key, value]) {
   console.log(key + ': ’ + value);
}); 

在HarmonyOS鸿蒙Next环境中,若要将JSON对象中的Map<string, Object>类型数据用new Map<string,Object>()创建的变量接收,通常涉及JSON解析和类型转换。以下是具体步骤:

  1. 解析JSON字符串:使用JSON.parse()方法将JSON字符串解析为JavaScript对象。

  2. 类型断言或转换:由于JSON.parse()返回的是普通的JavaScript对象,而不是Map类型,你可能需要手动将结果转换为Map<string, Object>

  3. 创建Map并填充数据:通过遍历解析后的对象,将其键值对添加到新的Map<string, Object>实例中。

示例代码:

let jsonString = '{"key1":"value1", "key2":123}';
let jsonObject = JSON.parse(jsonString);
let map = new Map<string, Object>();

for (let key in jsonObject) {
    if (jsonObject.hasOwnProperty(key)) {
        map.set(key, jsonObject[key]);
    }
}

// 此时map变量即为所需的Map<string, Object>类型

请注意,上述代码是基于JavaScript通用逻辑的示例,HarmonyOS具体环境可能需要适配。如果涉及TypeScript或其他复杂类型,可能还需额外处理。

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

回到顶部