【问题标题】:How to use variable in JMESPath expression?如何在 JMESPath 表达式中使用变量?
【发布时间】:2020-09-01 01:33:49
【问题描述】:

正则表达式的工作原理如下: jmespath.search(currentStats, 'Items[?Name == Annie]')

但我想将过滤后的键设为变量。

我试过了 var name = "安妮" jmespath.search(JSONdata, 'Items[?Name == %s]' %name;)

这不起作用。 非常感谢。

【问题讨论】:

  • 您使用什么语言?我猜是 Python,但我想确定。
  • 其实带分号的不可能是Python,但是我不确定还有什么其他语言使用%作为字符串插值运算符。
  • 对不起,我使用的是 Javascript,% 符号是在类似问题中提供的一些答案。

标签: json jmespath


【解决方案1】:

在 jmespath 或搜索函数中没有将模板值模板化到查询字符串中的内置方法,但您可以安全地使用反引号嵌入 JSON 文字,但您的语言允许这样做。

var name = "Annie";
var result = jmespath.search(JSONdata, 'Items[?Name == `' + JSON.stringify(name).replace('`','\\`') + '`]');

我们需要将字符串转换为 JSON,escape any backticks in that string,然后将其包装在反引号中。让我们把它包装成一个函数,让它更易读:

function jmespath_escape(item) {
    return '`' + JSON.stringify(name).replace('`','\\`') + '`';
}

var name = "Annie";
var result = jmespath.search(JSONdata, 'Items[?Name == ' + jmespath_escape(name) + ']');

【讨论】:

    猜你喜欢
    • 2016-01-12
    • 2011-02-05
    • 1970-01-01
    • 2017-10-11
    • 2012-04-09
    • 2019-11-08
    相关资源
    最近更新 更多