jmessath.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数字 :
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 语言比选择一个元素可以做得多 从列表。 这里还有几个例子:
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() 函数 :
function customFunc(resolvedArgs) {
return resolvedArgs[0] + 99;
}
var extraFunctions = {
custom: {_func: customFunc, _signature: [{types: [jmespath.types.TYPE_NUMBER]}]},
};
jmespath.decorate(extraFunctions);
装饰函数返回的值是一个曲折函数 (一次取一个参数) 使用搜索表达式 首先查找数据作为第二个参数:
var value = jmespath.decorate(extraFunctions)('custom(`1`)')({})
// value = 100
因为返回值来自 decorate() 是曲折函数
编辑表达式的结果可以缓存和运行
与不同数据相对的多倍数 :
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);
仅按键的多选择哈什
我稍微修改了语法 允许多选择散列 仅使用密钥指定.
var data = { one: 'first', two: 'second' };
var result = jmespath.search(data, '{ one }');
strictDeepEqual(result, { one: 'first' });
可选函数参数
最新版本(v1.3)增加了功能能力
(包括通过 decorate拥有
备选参数。 要激活这个, 设置 optional: true
在函数签名中.
JMESPATH + (英语)
对于更多自定义功能的例子, 和收缩洛达什, 见 JMESPATH + (英语)。 。 。 .
更多资源
上面的例子只显示少量 a JMESPath表达式可以。 如果你想要一个 游览语言 最好,我说 地点是 JMESPATH 教学。 。 。 .
JMESPath的最好之处之一是 以许多不同的编程语言执行,包括 p,红宝石,php,lua等. 要看到完整的图书馆列表, 检查出来 JMESPath 库页面。 。 。 .
最后,可以找到JMESPath的全部规格 编辑 JMESPath 站点。 。 。 .
