# @axync/extract-json 中文文档

规范地址：https://npmcn.com/package/%40axync/extract-json/

版本：1\.1\.3
npm 元数据更新时间：2025-06-05T00:28:15.892Z
中文译文更新时间：2026-11-07T16:43:44.412Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40axync/extract-json
原文对照：https://npmcn.com/package/%40axync/extract-json/?lang=original
项目主页：https://github.com/AnxinYang/axync/tree/main/packages/extract-json
源码仓库：https://github.com/AnxinYang/axync#main

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：56.6 kB，14 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2024-09-03T07:20:49.475Z
- 最新版本发布：2025-06-05T00:28:15.688Z
- 近 30 天下载量：4678（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：7（近 12 个月 0 个）

## 中文简介

从字符串中取出 JSON 对象和阵列的工具 .

## 安装

```sh
npm install @axync/extract-json
```

也可以使用：`pnpm add @axync/extract-json`、`yarn add @axync/extract-json`、`bun add @axync/extract-json`

## README

# @ axync/extract-json (英语)

![Test](https://github.com/AnxinYang/axync/actions/workflows/test.yml/badge.svg)

## 概览

`@axync/extract-json` 是一种强大的工具,旨在从原始文本中提取有效的JSON对象和阵列。 无论是与大文本数据合作,处理日志,还是解析大语言模型(LLMs)的响应,这个软件包都有助于从无结构的字符串中高效地取出结构化的JSON数据.

关键特征包括:

-   **同步和流式支持**:在不阻碍事件循环的情况下,逐步处理大型字符串.
-   **弹性 JSON 采掘业**: 从混合或吵闹的文本中提取多个 JSON 对象或阵列.
-   **实时数据处理**:用于日志解析或API响应处理等实时应用程序的理想.
-   **恢复能力**:在继续解析有效数据的同时优雅地跳过无效的 JSON .

> 说明: 这个软件包侧重于取出JSON对象(`{}`)和数组(`[]`仅此而已。 其他的JSON类型如字符串,数字,或布尔等都不被支持.

与 `@axync/extract-json`,可以无缝地将 JSON 提取集成到您的工作流程中,使其成为开发者使用无结构文本或LLM输出工作的基本工具.

## 安装

您可以使用 npm 安装软件包 :

```bash
npm install @axync/extract-json
```

## 使用量

这套方案提供的主要职能是: `extractJson` (同步)和 `extractJsonSync` (同步),它允许您从原始字符串中提取 JSON 对象和阵列 .

### 示例( Async)

```typescript
import { extractJson } from '@axync/extract-json';

const rawString = `
  Here is some text before a JSON object: {"key": "value"} 
  and another one: {"anotherKey": 123} and here is an array: [1, 2, 3]
`;

const jsonObjects = await extractJson(rawString);

console.log(jsonObjects);
// Output: [{ "key": "value" }, { "anotherKey": 123 }, [1, 2, 3]]
```

### 示例(同步)

```typescript
import { extractJsonSync } from '@axync/extract-json';

const rawString = `
  Here is some text before a JSON object: {"key": "value"} 
  and another one: {"anotherKey": 123} and here is an array: [1, 2, 3]
`;

const jsonObjects = extractJsonSync(rawString);

console.log(jsonObjects);
// Output: [{ "key": "value" }, { "anotherKey": 123 }, [1, 2, 3]]
```

### 示例(同步流)

这个 `extractStream` 函数允许您渐进处理 JSON 对象,这对大字符串或实时数据处理有用.

```typescript
import { extractStream } from '@axync/extract-json';

const rawString = `
  {"key1": "value1"} {"key2": "value2"} {"key3": "value3"}
`;

for await (const json of extractStream(rawString)) {
  console.log(json);
}
// Output:
// { key1: "value1" }
// { key2: "value2" }
// { key3: "value3" }
```

### 用限制提取

也可以指定一个限制来控制 JSON 对象或被提取的数组的数量:

#### 自动同步

```typescript
const jsonObjects = await extractJson(rawString, 2);

console.log(jsonObjects);
// Output: [{ "key": "value" }, { "anotherKey": 123 }]
```

#### 同步

```typescript
const jsonObjects = extractJsonSync(rawString, 2);

console.log(jsonObjects);
// Output: [{ "key": "value" }, { "anotherKey": 123 }]
```

## API 密码

### `extractJson(rawString: string, limit?: number): Promise<T[]>`

-   **原始结构**:包含潜在 JSON 对象或阵列的字符串.
-   **限制**: (可选) 要提取的 JSON 对象/阵列的最大数量 。 默认为 `Infinity`。 。 。 .

**回返**页:1 `Promise` 以解析 JSON 对象和数组.

* * *

### `extractJsonSync(rawString: string, limit?: number): T[]`

-   **原始结构**:包含潜在 JSON 对象或阵列的字符串.
-   **限制**: (可选) 要提取的 JSON 对象/阵列的最大数量 。 默认为 `Infinity`。 。 。 .

**回返**:取出JSON对象和阵列的阵列.

* * *

### `extractStream(rawString: string): AsyncGenerator<T>`

-   **原始结构**:包含潜在 JSON 对象或阵列的字符串.

**回返**页:1 `AsyncGenerator` 使 JSON 对象和阵列在解析时产生.

## 如何运作

1.  **直接解析**编号: `JsonExtractor` 类首尝试直接将整个字符串解析为JSON.
    
2.  **查找启动索引**: 如果直接解析失败, 它扫描 JSON 对象的潜在启动索引的字符串(`{`, (中文(简体) ), `[`)和数组.
    
3.  **分析子字符串**:该类然后试图从每个已识别索引开始分析子字符串,搜索有效的JSON对象和数组.
    
4.  **流线**编号: `extractStream` 方法将字符串递增处理,并在解析时输出 JSON 对象.
    

## 业绩

进行了业绩测试,以评价以下三项主要职能的效率: `@axync/extract-json`。下面是处理10万个JSON对象和一个阵列的结果:

-   **摘录 Json**: 已处理 `86.25ms`。 。 。 .
-   **提取 Json 同步**: 已处理 `78.93ms`。 。 。 .
-   **提取出 Stream**: 已处理 `108.98ms`。 。 。 .

### 测试环境

-   **CPU 软件**: 第13回 Gen Intel(R) Core(TM) i9-13900K, 24个核心, 3.0 GHz

### 意 见

-   `extractJsonSync` 是同步操作中最快的, 但会阻断事件循环 .
-   `extractJson` 提供同步处理,使其适合非阻塞操作.
-   `extractStream` 是逐渐流出大数据的理想方法.

## 限制

-   此软件包只提取 JSON 对象(`{}`)和数组(`[]`) (中文(简体) ). 它不提取JSON的其他数据类型,如字符串,数字,或布尔.

## 许可证

这个项目根据麻省理工学院的许可证获得许可.

## 常见问题

### @axync/extract-json 是什么？

从字符串中取出 JSON 对象和阵列的工具 \.

### 如何安装 @axync/extract-json？

在项目目录运行 npm install @axync/extract-json，或使用 pnpm add / yarn add / bun add。

### @axync/extract-json 支持 TypeScript 吗？

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

### @axync/extract-json 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @axync/extract-json 可以商用吗？

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

### @axync/extract-json 的下载量有多少？

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

### @axync/extract-json 还在维护吗？

最新版本 1\.1\.3 发布于 2025/06/05（1\.4 年前）；至今共发布 7 个版本，其中过去 12 个月发布了 0 个；首次发布于 2024/09/03。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

