@cacheplane/json-stream

中文文档
0.1.1发布于 2026/10/01MITTypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 1.2万

将递增的 JSON 解析器与 push/pull API,节点后卫,和 JSON 指针解析.

中文使用文档
文档目录8 节
  1. 安装
  2. 30- 第二实例
  3. 心理模式
  4. 结构错误
  5. 类型警卫
  6. JSON 指针查询
  7. 相关
  8. 许可证

@cacheplane/json-流

递增的 JSON 分析一次到达一个块的输入 .

当AI模型、网络流、工人或工具调用JSON时使用它 渐渐地. JSON.parse() 需要一个完整的文档; 此解析器会给您一个 文档到达时键入树, 标记每个节点 partial 或者说 complete 这样你就能把落地的东西 留下剩下的东西.

安装

npm install @cacheplane/json-stream

运行时间和包装 :

  • 节点 >=20
  • 包含类型脚本声明
  • 无害环境管理和CJS捆绑在一起
  • 零运行时间依赖关系
  • 标出无副作用

30- 第二实例

import { create, push, finish, isObjectNode } from "@cacheplane/json-stream";

let state = create();

for (const chunk of ['{"name": "Ada', '", "age": 3', "6}"]) {
  state = push(state, chunk);
}

state = finish(state);

if (isObjectNode(state.root)) {
  // Every node carries a status, so a half-arrived string is still readable.
  console.log(state.root.status); // "complete"
}

心理模式

3个函数驱动整个解析器, 每个函数返回一个新的 StreamState 而不是改变你通过的那个:

  • create() - 一个新鲜而空的状态.
  • push(state, chunk) ——喂下个块;安全到任何字节边界, 包括中键和中键逃逸顺序.
  • finish(state) ——输入信号端. 任何尚未解决的问题都会解决 报告为 StreamError。 。 。 .

树上的每个节点都带有 status 联 合 国 partial 或者说 complete这是 整个库的区别: 消费者可以制造字符串 并且知道不要把它当作最终决定.

结构错误

已解析对象值保留 JSON 密钥为可自控、可写入、, 普通对象上的可配置数据属性,包括空键和 诸如 __proto__, (中文(简体) ), constructor,以及 toString复制密钥 最后一个值,匹配 JSON.parse定义 JSON 密钥并不改变 结果对象的原型.

当分析失败时, state.error 包含一个 StreamError 与源位置, 人能读取 message和马厩 code b. 从公众那里 StreamErrorCode 工会:

type StreamErrorCode =
  | "INVALID_SYNTAX"
  | "UNEXPECTED_END"
  | "TRAILING_CONTENT";
  • INVALID_SYNTAX 表示一个符号或JSON语法规则有误,包括: 无法解析的已完成原始 .
  • UNEXPECTED_END 表示 finish() 找到在值或值时结束的输入 容器仍然是一个渐进有效的前缀。 包括号码 前缀,例如 -, (中文(简体) ), 1.,以及 1e+,可以在更多情况下生效 输入.
  • TRAILING_CONTENT 表示在根 JSON 后到达的更多非空白输入 数值已经完成.

使用 code 用于控制流动。 信息仍然对人们和诊断有帮助, 但它们的确切措词不是控制流动合同的一部分。 错误状态 是终端: 稍后 push() 财务报告和审定财务报表 finish() 调用保留相同的结构 错误状态 .

类型警卫

缩小每个节点类型的帮助, 外加状态检查 :

import {
  isArrayNode,
  isBoolNode,
  isComplete,
  isNullNode,
  isNumberNode,
  isObjectNode,
  isStringNode,
} from "@cacheplane/json-stream";

isComplete(node) 当决定一个值是否为 安全下游承诺.

JSON 指针查询

resolve 从树上读出一个节点 RFC 6901 (英语) 指针,即 当您关心大流文件的一个字段时, 方便:

import { resolve } from "@cacheplane/json-stream";

const node = resolve(state.root, "/choices/0/message/content");

它回来了 undefined 当路径尚不存在时——一个正常条件 中流,不是错.

许可证

麻省理工学院

版本与发布记录

@cacheplane/json-stream 共发布 6 个版本,首次发布于 2026/05/03;过去 12 个月发布了 6 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.1latest2026/10/011 个月前
0.1.02026/09/022 个月前
0.0.42026/08/073 个月前
0.0.32026/08/073 个月前
0.0.22026/08/063 个月前
0.0.12026/05/036 个月前

关于 @cacheplane/json-stream 的常见问题

@cacheplane/json-stream 是什么?

将递增的 JSON 解析器与 push/pull API,节点后卫,和 JSON 指针解析.

如何安装 @cacheplane/json-stream?

在项目目录运行 npm install @cacheplane/json-stream,或使用 pnpm add / yarn add / bun add。

@cacheplane/json-stream 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cacheplane/json-stream 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@cacheplane/json-stream 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cacheplane/json-stream 可以商用吗?

@cacheplane/json-stream 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@cacheplane/json-stream 的下载量有多少?

根据 npm 官方下载统计,@cacheplane/json-stream 在 2026/10/09 – 2026/11/07 这 30 天内被下载 11,567 次,日均约 386 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cacheplane/json-stream 还在维护吗?

最新版本 0.1.1 发布于 2026/10/01(1 个月前);至今共发布 6 个版本,其中过去 12 个月发布了 6 个;首次发布于 2026/05/03。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。