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

发布于 1周前 作者 h691938207 最后一次编辑是 5天前 来自 鸿蒙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);

但是如代码所示,使用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);

2 回复

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

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

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

HarmonyOS 鸿蒙Next 纯血鸿蒙正式版教程b站在线学习地址:https://www.bilibili.com/video/BV1fw2ZYSEk2

HarmonyOS 鸿蒙Next 纯血鸿蒙正式版教程课件源码网盘下载地址:https://pan.baidu.com/s/1sPa2jePO9gxHgdEGwlpp1g?pwd=5rnu

若网盘地址失效可访问此地址获取:https://www.itying.com/goods-1205.html

回到顶部