小编Joh*_*ler的帖子

按属性过滤对象,并使用jmespath中的键选择

我正在尝试根据子属性的值过滤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 ]可以工作,它也只是属性值的数组,但我还需要键(ac).有没有办法在jmespath中实现这一点?

这是一个ansible playbook的所有部分,所以肯定会有一种方法以不同的方式实现选择(Jinja2模板或自定义插件),但我想尝试jmespath并且会推理它应该能够执行这样的任务.

json normalization ansible jmespath

16
推荐指数
3
解决办法
6121
查看次数

有没有办法让VS代码与git worktree一起工作?(带WSL的Windows)

我喜欢在几个工作树上检查存储库,git worktree以便同时轻松地在不同的分支上工作.然而,当它在git worktree文件夹中时,VS代码似乎不会将git识别为scm.

我在文档中找不到关于此或扩展名的任何内容.关于如何在外部工作树中获得支持git功能的VS代码,有什么想法吗?

git visual-studio-code git-worktree windows-subsystem-for-linux

4
推荐指数
1
解决办法
928
查看次数

Crystal 中的 Hash 和 NamedTuple 有什么区别?

这两种语法看起来相当等效,它们的用例也很相似。例子:

# 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)

那么这两个原语究竟有什么不同呢?

syntax crystal-lang

4
推荐指数
1
解决办法
611
查看次数