# @daz\.is/jmespath 中文文档

规范地址：https://npmcn.com/package/%40daz.is/jmespath/

版本：1\.3\.1
npm 元数据更新时间：2022-04-05T03:11:42.218Z
中文译文更新时间：2026-11-12T13:13:08.396Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40daz.is/jmespath
原文对照：https://npmcn.com/package/%40daz.is/jmespath/?lang=original
项目主页：https://github.com/daz-is/jmespath.js
源码仓库：https://github.com/daz-is/jmespath.js

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

- 包体积（解压后）：221 kB，28 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- Node.js 要求：\>= 0\.6\.0
- 运行依赖：0 个
- 首次发布：2020-02-28T06:03:23.204Z
- 最新版本发布：2020-07-01T08:33:33.937Z
- 近 30 天下载量：2429（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：9（近 12 个月 0 个）

## 中文简介

JMESPath在javascript中的执行

## 安装

```sh
npm install @daz.is/jmespath
```

也可以使用：`pnpm add @daz.is/jmespath`、`yarn add @daz.is/jmespath`、`bun add @daz.is/jmespath`

## README

# jmessath.js (英语)

[![Build Status](https://travis-ci.org/daz-is/jmespath.js.png?branch=publish)](https://travis-ci.org/daz-is/jmespath.js)

## 安装

```
npm install --save @daz.is/jmespath
```

## 福尔克

NB: 这是最初 JavaScript 执行的分叉 (原始内容存档于2018-09-26). of JMES Path. 原作现在被认为没有保存下来, 因此,这个叉增加了几个有用的特性:

-   定义自定义函数
-   缓存解析表达式
-   使用$访问根元素

## 关于

jmessath.js是JMESPath的javascript执行程序, 这是 JSON 的查询语言。 这需要一个JSON 文档并将其转换为另一个 JSON 文档 通过 JMESPath 表达式.

使用jmespath.js 真的很容易。 只有一个功能 你用这个, `jmespath.search`数字 :

```js
var jmespath = require('jmespath');
jmespath.search({foo: {bar: {baz: [0, 1, 2, 3, 4]}}}, "foo.bar.baz[2]")

// output = 2
```

举个例子 `search` 函数输入数据 `{foo: {bar: {baz: [0, 1, 2, 3, 4]}}}` 以及耶稣会 表达式 `foo.bar.baz[2]`,则 `search` 评价的函数 以输入数据表示结果 `2`。 。 。 .

JMESPath 语言比选择一个元素可以做得多 从列表。 这里还有几个例子:

```js
jmespath.search({foo: {bar: {baz: [0, 1, 2, 3, 4]}}}, "foo.bar")

// { baz: [ 0, 1, 2, 3, 4 ] }

jmespath.search({"foo": [{"first": "a", "last": "b"},
                           {"first": "c", "last": "d"}]},
                  "foo[*].first")

// [ 'a', 'c' ]

jmespath.search({"foo": [{"age": 20}, {"age": 25},
                           {"age": 30}, {"age": 35},
                           {"age": 40}]},
                  "foo[?age > `30`]")

// [ { age: 35 }, { age: 40 } ]
```

## 添加自定义函数

自定义函数可以通过使用 `decorate()` 函数 :

```js
function customFunc(resolvedArgs) {
  return resolvedArgs[0] + 99;
}
var extraFunctions = {
  custom: {_func: customFunc, _signature: [{types: [jmespath.types.TYPE_NUMBER]}]},
};
jmespath.decorate(extraFunctions);
```

装饰函数返回的值是一个曲折函数 (一次取一个参数) 使用搜索表达式 首先查找数据作为第二个参数:

```js
var value = jmespath.decorate(extraFunctions)('custom(`1`)')({})
// value = 100
```

因为返回值来自 `decorate()` 是曲折函数 编辑表达式的结果可以缓存和运行 与不同数据相对的多倍数 :

```js
var expr = jmespath.decorate({})('a');
// expr is now a cached compiled version of the search expression
var value = expr({ a: 1 });
assert.strictEqual(value, 1);
value = expr({ a: 2 });
assert.strictEqual(value, 2);
```

## 仅按键的多选择哈什

我稍微修改了语法 允许多选择散列 仅使用密钥指定.

```js
var data = { one: 'first',  two: 'second' };
var result = jmespath.search(data, '{ one }');
strictDeepEqual(result, { one: 'first' });
```

## 可选函数参数

最新版本(v1.3)增加了功能能力 (包括通过 `decorate`拥有 备选参数。 要激活这个, 设置 `optional: true` 在函数签名中.

## JMESPATH + (英语)

对于更多自定义功能的例子, 和收缩洛达什, 见 [JMESPATH + (英语)](https://github.com/daz-is/jmespath-plus)。 。 。 .

## 更多资源

上面的例子只显示少量 a JMESPath表达式可以。 如果你想要一个 游览语言 _最好,我说_ 地点是 [JMESPATH 教学](http://jmespath.org/tutorial.html)。 。 。 .

JMESPath的最好之处之一是 以许多不同的编程语言执行,包括 p,红宝石,php,lua等. 要看到完整的图书馆列表, 检查出来 [JMESPath 库页面](http://jmespath.org/libraries.html)。 。 。 .

最后,可以找到JMESPath的全部规格 编辑 [JMESPath 站点](http://jmespath.org/specification.html)。 。 。 .

## 常见问题

### @daz\.is/jmespath 是什么？

JMESPath在javascript中的执行

### 如何安装 @daz\.is/jmespath？

在项目目录运行 npm install @daz\.is/jmespath，或使用 pnpm add / yarn add / bun add。

### @daz\.is/jmespath 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/daz\.is\_\_jmespath 是否存在。

### @daz\.is/jmespath 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @daz\.is/jmespath 需要什么版本的 Node\.js？

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

### @daz\.is/jmespath 可以商用吗？

@daz\.is/jmespath 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @daz\.is/jmespath 的下载量有多少？

根据 npm 官方下载统计，@daz\.is/jmespath 在 2026/10/12 – 2026/11/10 这 30 天内被下载 2,429 次，日均约 81 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @daz\.is/jmespath 还在维护吗？

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

