Bun.JSONL.parse()
解析完整的 JSONL 输入并返回所有解析值的数组。
Uint8Array:
Uint8Array 输入,Bun 会跳过缓冲区开头的 UTF-8 BOM。
错误处理
如果输入包含无效 JSON,且没有成功解析任何值,Bun.JSONL.parse() 会抛出 SyntaxError。如果在出错前至少解析了一个值,则会返回已解析的值,而不会抛出异常。
Bun.JSONL.parseChunk()
对于流式处理,parseChunk 会尽可能多地解析输入中的完整值,并报告解析到的位置。这样,当数据逐步到达时(例如来自网络流),你就知道从哪里继续处理。
返回值
parseChunk 返回一个包含四个属性的对象:
流式示例
使用read 截取已消耗输入,剩余部分继续传递:
使用 Uint8Array 的字节偏移
当输入为 Uint8Array 时,可以传入可选的起始和结束字节偏移:
read 值始终是原始缓冲区中的字节偏移量。将它与 TypedArray.subarray() 结合使用,可以实现零拷贝流式处理:
错误恢复
与parse() 不同,parseChunk() 遇到无效 JSON 不抛出异常,而是通过返回的 error 属性提供错误信息,同时返回错误前成功解析的所有值:
支持的值类型
每一行可以是任意有效的 JSON 值,而不仅限于对象:性能说明
- ASCII 快速路径:Bun 使用零分配的
StringView直接解析纯 ASCII 输入,无需复制。 - UTF-8 支持:Bun 会将非 ASCII 的
Uint8Array输入解码为 UTF-16。 - BOM 处理:Bun 会自动跳过
Uint8Array开头的 UTF-8 BOM(0xEF 0xBB 0xBF)。 - 预构建对象结构:
parseChunk返回的对象使用缓存结构,以加快属性访问速度。