HarmonyOS 鸿蒙Next关于使用stringfy()把Map对象转为字符串,解析为空对象的问题

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

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);<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

但是如代码所示,使用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);<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

1 回复

在HarmonyOS中使用stringify()方法(通常指的是JavaScript中的JSON.stringify())将Map对象转为字符串时,由于Map对象不是JSON的内置支持类型,直接转换会导致空对象的结果。你需要先将Map对象转换为JSON兼容的对象(如数组或普通对象),然后再进行序列化。

例如,你可以使用Array.from()结合Map.entries()来转换Map对象为数组,然后处理这个数组以构建一个新的对象,或者使用递归函数手动转换。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部