鸿蒙开发:6-Map与JSON互转

279 阅读1分钟

有时候我们需要将数据存储在Map中,但是如果需要将数据持久化,比如使用DataPreferences,但其不支持直接持久化ObjectMap类型数据,需要先转换为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)
//   }
// }