Skip to content
English

parseJsonFrames ​

SUPPORT · function · 运行时值

Parse complete object frames under explicit count and size limits.

Only whitespace may appear outside frames; a stray closing brace is tolerated only up to maxExtraClosings, which covers transports that repeat the delimiter after the payload.

导入 ​

ts
import { parseJsonFrames } from '@jangts/agent-core/json-transport';
js
import { parseJsonFrames } from '@jangts/agent-core/json-transport';

其他公开入口:@jangts/agent-core、@jangts/agent-core/types、@jangts/agent-core/json-transport、@jangts/agent-core/support。

定义 ​

调用 ​

ts
parseJsonFrames(text: string, limits: JsonFrameLimits): Record<string, unknown>[]

Parse complete object frames under explicit count and size limits.

Only whitespace may appear outside frames; a stray closing brace is tolerated only up to maxExtraClosings, which covers transports that repeat the delimiter after the payload.

参数类型传递说明
textstring必需—
limitsJsonFrameLimits必需—
limits 的字段
字段类型必需说明
maxFramesnumber必需Maximum number of complete frames accepted.
maxExtraClosingsnumber必需Stray closing braces tolerated outside frames, covering transports that repeat a delimiter.
maxFrameCharsnumber | undefined可省略Optional per-frame character cap so a single frame cannot amplify into an oversized parse.

返回: Record<string, unknown>[]。

使用示例 ​

在本地解析一帧 SSE ​

入门 · Node.js

ts
import { Support } from '@jangts/agent-core';
const frame = Support.encodeSseEvent({ event: 'status', data: JSON.stringify({ phase: 'thinking' }) });
const body = new Response(frame).body!;
for await (const event of Support.readSse(body)) console.log(event.event, event.data);
js
import { Support } from '@jangts/agent-core';
const frame = Support.encodeSseEvent({ event: 'status', data: JSON.stringify({ phase: 'thinking' }) });
const body = new Response(frame).body;
for await (const event of Support.readSse(body))
    console.log(event.event, event.data);

生产者等待每一次事件交付 ​

配置 · Node.js

ts
import { Support } from '@jangts/agent-core';
const signal = new AbortController().signal;
const stream = Support.streamEvents<{ phase: string }>(async emit => {
  await emit({ phase: 'preparing' });
  await emit({ phase: 'complete' });
}, { signal });
for await (const event of stream) console.log(event.phase);
js
import { Support } from '@jangts/agent-core';
const signal = new AbortController().signal;
const stream = Support.streamEvents(async (emit) => {
    await emit({ phase: 'preparing' });
    await emit({ phase: 'complete' });
}, { signal });
for await (const event of stream)
    console.log(event.phase);

显式限制 JSON 帧数量和外围内容 ​

扩展 · Node.js

ts
import { Support } from '@jangts/agent-core';
const text = '{"kind":"reply","answer":"服务正常"}';
console.log(Support.scanJsonObjectFrames(text));
console.log(Support.parseJsonFrames(text, { maxFrames: 1, maxExtraClosings: 0 }));
const sent: string[] = [];
await Support.writeSseFrame({
  writer: { write(frame) { sent.push(frame); return true; }, async waitForDrain() {} },
  frame: Support.encodeSseEvent({ event: 'answer', data: text }),
}, { signal: new AbortController().signal });
console.log(sent);
js
import { Support } from '@jangts/agent-core';
const text = '{"kind":"reply","answer":"服务正常"}';
console.log(Support.scanJsonObjectFrames(text));
console.log(Support.parseJsonFrames(text, { maxFrames: 1, maxExtraClosings: 0 }));
const sent = [];
await Support.writeSseFrame({
    writer: { write(frame) { sent.push(frame); return true; }, async waitForDrain() { } },
    frame: Support.encodeSseEvent({ event: 'answer', data: text }),
}, { signal: new AbortController().signal });
console.log(sent);

相关策略源码 ​

相关定义 ​

接口参考、使用示例与开发指南。