将大型POJO直接转为Blob:规避JSON.stringify字符串长度限制
大体积POJO转Blob的浏览器端解决方案需求
背景
我的应用中有如下代码:
let blob = new Blob([JSON.stringify(json)], {type: "application/json"});
但这段代码有时会执行失败,原因是Chrome中字符串的最大长度约为500MB,而json对应的POJO对象体积有时会超过这个限制。
问题
我需要一种能直接将内存中的POJO(即json变量)转换为Blob的方法,可通过流式序列化并实时写入ArrayBuffer的方式实现,或者采用其他能避免「字符串长度超限」错误的方案。
注意事项
- 方案必须支持浏览器环境;
- 若推荐现有库,不能仅支持数组类型的JSON,需适配任意嵌套的JSON对象(例如90%数据集中在
foo.bar.whatever路径下的复杂结构); - 不接受以流为输入、输出流片段的方案(如json-stream-stringify、streaming-json-stringify),要求输入为内存中的POJO,输出为包含完整序列化JSON的Blob。
相关参考
- 有开发者在Node.js环境下遇到类似问题,探讨了如何用JSONStream序列化大对象;
- 另一个相关讨论是关于在Node.js中如何用流序列化大型嵌套对象,若能在浏览器中实现生成超长度JSON的ArrayBuffer,也可作为可行方案。
内容的提问来源于stack exchange,提问作者joe
相关产品推荐
相关产品推荐

