ansible - 如何从列表中获取嵌套值
问题描述
我无法从我解释的此类数组中包含特定值的 json 代码中获取 ID:我有此代码 json:
{
"results": [
{
"TAB": "bleu",
"exp": [
{
"A": "NOT_PROTECTED",
"B": [
"500",
"600"
],
"C": false
}
],
"ID": "000041"
},
{
"TAB": "rouge",
"exp": [
{
"A": "PROTECTED",
"B": [
"700",
"800"
],
"C": true
}
],
"ID": "000042"
}
]
}
解决方案
我假设问题是您如何访问 Ansible 中的值,因为它具有 ansible 标记。
您可以使用 Ansible 中的地图过滤器来访问如下值:(您的 json 在some_json
变量中的位置。)
- debug:
msg: "{{ some_json.results | map(attribute='ID') | list }}"
结果:
ok: [localhost] => {
"msg": [
"000041",
"000042"
]
}
如果你想用json_query/jmespath
(因为问题也用json_query
and标记jmespath
)那么它会是这样的:
- debug:
msg: "{{ some_json.results | json_query('[*].ID') | list }}"
ok: [localhost] => {
"msg": [
"000041",
"000042"
]
}
话虽如此,我自己更喜欢这种map
方法,因为它不需要安装任何额外的依赖json_query
项jmespath
。
推荐阅读
- html - 如何在表 td 中将两个 div 并排放置
- uibutton - Swift 4 - UITextField DidBeginEditing
- spring - spring boot azure storage 连接字符串错误
- sql-server - 通过 REST API 创建 AX 订单
- c# - xamarin 与 Microsoft.EntityFrameworkCore.Sqlite 冲突
- python - tf.feature_column.input_layer 和 tf.layers.Input 有什么区别
- autohotkey - AutoHotkey 使删除少于键入
- html - 多行flexbox,容器宽度只有一列
- solidity - 在 Remix ide 上部署 Solidity 问题
- javascript - 如果配置了 scrollablePlotArea,则在图表图例中显示复选框效果不佳