HarmonyOS 鸿蒙Next 转出的JSON对象里的Map<string, Object>类型数据如何用new Map<string,Object>()创建的变量接收
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)
我该怎么做
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解析和类型转换。以下是具体步骤:
-
解析JSON字符串:使用
JSON.parse()
方法将JSON字符串解析为JavaScript对象。 -
类型断言或转换:由于
JSON.parse()
返回的是普通的JavaScript对象,而不是Map
类型,你可能需要手动将结果转换为Map<string, Object>
。 -
创建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