gpt4 book ai didi

javascript - 使用 FileReader 读取 JSON 文件?

转载 作者:搜寻专家 更新时间:2023-10-30 21:18:48 26 4
gpt4 key购买 nike

我正在尝试读取我拥有的用户上传的 JSON 文件,并尝试将其复制到一个数组中。但是,使用 .readAsText(),我得到的返回值具有字符串格式(很明显),例如包括\"和\n 以及其他类似字符串的属性。

有没有一种方法可以使用 FileReader(或任何其他不涉及服务器的读取文件的形式)来读取 JSON 文件并让它只返回纯 JSON?

例如让它返回

[
{"hello": "world"}
]

[{"hello": "world"}]

不是

"[\n{\"hello\": \"world\"}\n]"

?

编辑:我现在知道 JSON.parse(text) 方法,但是在解析 FileReader 对象时出现错误

 let fileUploaded = new FileReader();
fileUploaded.readAsText(MY_JSON_FILE);
console.log(JSON.parse(fileUploaded));

它返回错误 error TS2345: Argument of type 'FileReader' is not assignable to parameter of type 'string'

我能否将使用 FileReader 读取的内容转换为另一个字符串变量,然后解析该新变量?

最佳答案

问题中的代码使用 FileReader 不正确。

FileReader .readAs<Type>操作是异步的。 FileReaderloadloadend result 发生的事件event.target的属性(property)和 FileReader instance 是异步处理的结果数据。

不解析FileReader对象本身。

.readAs<Type>期待一个 Blob 作为参数传递,而不是 JavaScript 普通对象。

const MY_JSON_FILE = [{
"hello": "world"
}];

let json = JSON.stringify(MY_JSON_FILE);

const blob = new Blob([json], {type:"application/json"});

const fr = new FileReader();

fr.addEventListener("load", e => {
console.log(e.target.result, JSON.parse(fr.result))
});

fr.readAsText(blob);

关于javascript - 使用 FileReader 读取 JSON 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54617844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com