我正在获取一个大的 JSON 文件(200mb),并且我想将这些数据呈现为数据流中的数据。我遇到的问题是,在解码和解析流式传输给我的块后,会返回一个语法错误我Unexpected end of JSON input在控制台中。我想要做的是解析返回块并在获得数据后立即对其进行处理。但是,由于 ReadableStream 以块的形式进行流式传输,而这些块的切片方式是不可预测的,因此我无法对返回值执行 JSON.parse() 。需要进行什么样的数据处理才能实现这一点?有更好的方法吗?
这是我的代码:
const decoder = new TextDecoder('utf-8')
fetch("../files/response.json")
.then(response => {
const reader = response.body.getReader()
new ReadableStream({
start(controller) {
function enqueueValues() {
reader.read()
.then(({ done, value }) => {
if (done) {
controller.close() // stream is complete
return
}
var decodedValue = decoder.decode(value) // one chunk of invalid json data in string format
console.log(JSON.parse(decodedValue)) // json syntax error
// do something with the json value here
controller.enqueue(value)
enqueueValues() …Run Code Online (Sandbox Code Playgroud)