有时候我们需要将数据存储在Map中,但是如果需要将数据持久化,比如使用DataPreferences,但其不支持直接持久化Object和Map类型数据,需要先转换为JSON,变为string类型进行存储,使用时取到string,再进行parse。
JSON.stringify不支持直接string化Map,可以先将Map转为Object
Map转Object利用Object.fromEntries。
MapTools.ts
export class MapTools {
static MapToJson(map: Map<number | string, any>): string {
return JSON.stringify(Object.fromEntries(map.entries() as Iterable<readonly any[]>));
}
static JsonToMap(mapStr: string, keyToNumber: boolean = true) {
let arr = Object.entries(JSON.parse(mapStr));
if (keyToNumber) {
return new Map(arr.map(item => [Number(item[0]), item[1]]))
}
return new Map(arr);
}
}
// export class ObjectUtil {
// static ObjectFromEntries(source: Iterable<readonly any[]>): Object {
// return Object.fromEntries(source)
// }
// }