JavaScript 中如何将 Map 转换为 JSON
要将 Map 转换为 JSON:
- 使用 Object.fromEntries() 方法将 Map 转换为对象。
- 将对象传递给 JSON.stringify() 方法。
- 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);
我们使用 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,则必须:
- 使用 JSON.parse 方法将 JSON 字符串解析为对象。
- 使用 Object.entries 方法获取键值对数组。
- 使用键值对数组调用 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'}
Object.entries 方法接受一个对象并返回一个二维数组。
// ?️ [['name', 'Tom'], ['country', 'Chile']]
console.log(Object.entries({name: 'Tom', country: 'Chile'}));
Map() 构造函数需要一个迭代,其元素是键值对,因此我们可以直接将调用 Object.entries 方法的结果传递给它。
为了避免 Map 对象本身不支持序列化或解析这一事实,我们将 Map 转换为对象并序列化该对象。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。