我可以将 CSV 数据作为 ARRAY 而不是 OBJECT 导入 localStorage 吗?

问题描述 投票:0回答:1

以下代码假设将数据从 CSV 文件导入到 localStorage 中。目标是替换/更新任何现有的本地存储数据。我正在使用 FileReader 进行导入,并尝试使用 JSON.stringify 将其保存到 localStorage。

const fileInput = document.getElementById('csv');

const readFile = () => {
  const reader = new FileReader();
  
  reader.onload = () => {
    localStorage.setItem("entry_list", JSON.stringify(reader.result));
  }
  reader.readAsArrayBuffer(fileInput.files[0]);
};

fileInput.addEventListener('change', readFile);

我认为问题在于它是否试图将其作为对象而不是数组导入。我该如何解决这个问题或解决这个问题?

javascript csv import
1个回答
0
投票

问题是您尝试在

JSON.stringify
对象上使用
ArrayBuffer
ArrayBuffer
没有任何可枚举的对象属性,因此在字符串化时就变成了
{}

要么使用

JSON.stringify(Array.from(new Uint8Array(reader.result)))
将其转换为常规数组,要么 - 我的建议,因为它更容易再次转换为文件并且更小以存储 - 不要首先将其读取为
ArrayBuffer
而是作为数据 URI(其中将使用 base64 编码),将
readAsArrayBuffer
替换为
readAsDataURL

© www.soinside.com 2019 - 2024. All rights reserved.