如何解决如何在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 举报,一经查实,本站将立刻删除。