HarmonyOS 鸿蒙Next关于使用stringfy()把Map对象转为字符串,解析为空对象的问题
HarmonyOS 鸿蒙Next关于使用stringfy()把Map对象转为字符串,解析为空对象的问题
想要对一个Map对象转为字符串格式
export type AllValue = number | string | boolean | Uint8Array | bigint| ArrayBuffer
let params = new Map<string,AllValue>();
params.set(“key1”,0)
params.set(“key2”,“cangjie”)
params.set(“key3”,true)
let str = JSON.stringify(params);
console.log(str);
但是如代码所示,使用JSON.Stringfy(map),得到的是个{}
解决方案:
结合以上代码,先把Map格式的param转成Record后,再通过JSON.stringify()转为JSON字符串
export type AllValue = number | string | boolean | Uint8Array | bigint| ArrayBuffer
let params = new Map<string,AllValue>();
params.set(“key1”,0)
params.set(“key2”,“cangjie”)
params.set(“key3”,true)
//map对象转为record格式
let jsonObject: Record<string, Object> = {};
params.forEach((value, key) => {
if (key !== undefined && value !== undefined) {
jsonObject[key] = value;
}
})
let str = JSON.stringify(jsonObject);
console.log(str);
在HarmonyOS中使用stringify()
方法(通常指的是JavaScript中的JSON.stringify()
)将Map对象转为字符串时,由于Map对象不是JSON的内置支持类型,直接转换会导致空对象的结果。你需要先将Map对象转换为JSON兼容的对象(如数组或普通对象),然后再进行序列化。
例如,你可以使用Array.from()
结合Map.entries()
来转换Map对象为数组,然后处理这个数组以构建一个新的对象,或者使用递归函数手动转换。
如果问题依旧没法解决请加我微信,我的微信是itying888。