在 JavaScript 中将地图转换为 JSON
How to Convert a Map to JSON in JavaScript
要将 a 转换Map
为 JSON:
- 使用
Object.fromEntries()
方法将 转换Map
为对象。 - 将对象传递给
JSON.stringify()
方法。 - 该
JSON.stringify()
方法将传入的值转换为 JSON 字符串。
索引.js
const map = new Map([ ['name', 'Tom'], ['country', 'Chile'], ]); // ✅ Convert to JSON string const json = JSON.stringify(Object.fromEntries(map)); // 👇️ '{"name": "Tom", "country": "Chile"}' console.log(json);
我们使用
Object.fromEntries
方法将 a 转换Map
为对象。
索引.js
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 字符串转换回 a Map
,您必须:
- 使用
JSON.parse
方法将 JSON 字符串解析为对象。 - 使用该
Object.entries
方法获取键值对数组。 Map()
使用键值对数组调用构造函数。
索引.js
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'}
该Object.entries
方法接受一个对象并返回一个二维数组。
索引.js
// 👇️ [['name', 'Tom'], ['country', 'Chile']] console.log(Object.entries({name: 'Tom', country: 'Chile'}));
Map()
构造函数需要一个其元素是键值对的可迭代对象,因此我们可以直接将调用该方法的结果传递给它
Object.entries
。
为了避免
Map
对象不具有对序列化或解析的本机支持这一事实,我们将 转换Map
为一个对象并序列化该对象。