JavaScript 中如何将 Map 转换为 JSON

要将 Map 转换为 JSON:

  1. 使用 Object.fromEntries() 方法将 Map 转换为对象。
  2. 将对象传递给 JSON.stringify() 方法。
  3. JSON.stringify() 方法将传入的值转换为 JSON 字符串。
const map = new Map([
  ['name', 'Tom'],
  ['country', 'Chile'],
]);

// ✅ 转换为JSON字符串
const json = JSON.stringify(Object.fromEntries(map));

// ?️ '{"name": "Tom", "country": "Chile"}'
console.log(json);

JavaScript 中如何将 Map 转换为 JSON

我们使用 Object.fromEntries 方法将 Map 转换为对象。

const map = new Map([
  ['name', 'Tom'],
  ['country', 'Chile'],
]);

const obj = Object.fromEntries(map);
console.log(obj) // ?️ {name: 'Tom', country: 'Chile'}

我们必须这样做,因为 Map 对象没有对序列化或解析的本机支持。

下一步是将对象传递给 JSON.stringify 方法。

JSON.stringify 方法将对象转换为 JSON 字符串并返回结果。

如果需要将 JSON 字符串转换回 Map,则必须:

  1. 使用 JSON.parse 方法将 JSON 字符串解析为对象。
  2. 使用 Object.entries 方法获取键值对数组。
  3. 使用键值对数组调用 Map() 构造函数。
const map = new Map([
  ['name', 'Tom'],
  ['country', 'Chile'],
]);

const json = JSON.stringify(Object.fromEntries(map));

const obj = JSON.parse(json);

const mapAgain = new Map(Object.entries(obj));
console.log(mapAgain); // ?️ {'name' => 'Tom', 'country' => 'Chile'}

JavaScript 中如何将 Map 转换为 JSON

Object.entries 方法接受一个对象并返回一个二维数组。

// ?️ [['name', 'Tom'], ['country', 'Chile']]
console.log(Object.entries({name: 'Tom', country: 'Chile'}));

Map() 构造函数需要一个迭代,其元素是键值对,因此我们可以直接将调用 Object.entries 方法的结果传递给它。

为了避免 Map 对象本身不支持序列化或解析这一事实,我们将 Map 转换为对象并序列化该对象。