我正在尝试根据子属性的值过滤jmespath中对象的属性,并且只想包含子属性设置为特定值的那些属性.
基于此示例数据:
{
"a": {
"feature": {
"enabled": true,
}
},
"b": {
},
"c": {
"feature": {
"enabled": false
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想获得一个具有启用该功能的所有属性的对象.
{
"a": {
"feature": {
"enabled": true,
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想我可以使用这个jmespath查询来过滤property. enabled设置为true 的对象.不幸的是,它似乎不起作用而是返回一个空数组.
*[?feature.enabled==`true`]
Run Code Online (Sandbox Code Playgroud)
*.feature.enabled或者*[feature.enabled]只返回没有任何上下文的布尔值.
即使*[?feature.enabled==true ]可以工作,它也只是属性值的数组,但我还需要键(a和c).有没有办法在jmespath中实现这一点?
这是一个ansible playbook的所有部分,所以肯定会有一种方法以不同的方式实现选择(Jinja2模板或自定义插件),但我想尝试jmespath并且会推理它应该能够执行这样的任务.
我喜欢在几个工作树上检查存储库,git worktree以便同时轻松地在不同的分支上工作.然而,当它在git worktree文件夹中时,VS代码似乎不会将git识别为scm.
我在文档中找不到关于此或扩展名的任何内容.关于如何在外部工作树中获得支持git功能的VS代码,有什么想法吗?
git visual-studio-code git-worktree windows-subsystem-for-linux
这两种语法看起来相当等效,它们的用例也很相似。例子:
# Hash
hash = {"name" => "Crystal", "year" => 2011}
hash["name"] # outputs: Crystal
# NamedTuple
tuple = {name: "Crystal", year: 2011}
tuple[:name] # outputs: Crystal
Run Code Online (Sandbox Code Playgroud)
那么这两个原语究竟有什么不同呢?