微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在JMESPath表达式中使用变量?

如何解决如何在JMESPath表达式中使用变量?

正则表达式的完美用法如下: jmespath.search(currentStats,'Items [?Name == Annie]')

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

我尝试过 var name =“ Annie” jmespath.search(JSONdata,'Items[?Name == %s ]' %name;

这不起作用。 预先非常感谢。

解决方法

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) + ']');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。