Angular中如何将设置对象与数组以BLOB形式读写JSON文件?
写入操作
要同时保存设置对象和数组,只需把两者包装成一个顶层对象再序列化即可:
- 构造包含设置和数组的复合对象
- 对复合对象做JSON序列化
- 生成Blob并保存为JSON文件
代码示例:
// 包装设置对象和数组为一个复合结构 const exportData = { settings: mySettingObject, dataList: myArrayObj }; // 序列化后生成Blob并保存 const blob = new Blob([JSON.stringify(exportData)], { type: 'application/json' }); saveAs(blob, `${myFileName}.json`);
读取操作
读取时先解析整个JSON内容,再分别提取设置对象和数组:
- 读取文件内容并解析为JSON对象
- 从解析结果中取出
settings和dataList属性 - (可选)如果需要将数组元素还原为
myObj类实例,需手动转换(JSON序列化会丢失类原型信息)
代码示例:
const fileReader = new FileReader(); fileReader.onload = (e) => { const content = e.target?.result; if (typeof content === 'string') { // 解析整个复合对象 const importedData = JSON.parse(content); // 提取设置对象 const mySettingObject = importedData.settings; // 提取数组,可选转换为myObj实例 const myArrayObj = importedData.dataList.map(item => { // 用Object.assign把普通对象属性赋值给新的myObj实例 return Object.assign(new myObj(), item); // 或者如果myObj有接收参数的构造函数,可改用new myObj(item.propA, item.propB) }); } }; // 别忘了调用readAsText启动读取:fileReader.readAsText(yourFile);
内容的提问来源于stack exchange,提问作者simon thismyvoice
相关产品推荐
相关产品推荐

