json - 计算输出中 json 对象的数量
问题描述
我正在使用 Ansible 的 vmware_cluster_info 来提供以下 json。我需要能够计算集群中的主机数量。集群名称会改变。
{
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"clusters": {
"Cluster1": {
"drs_default_vm_behavior": "fullyAutomated",
"ha_restart_priority": [
"medium"
],
"ha_vm_failure_interval": [
50
],
"ha_vm_max_failure_window": [
0
],
"ha_vm_max_failures": [
10
],
"ha_vm_min_up_time": [
90
],
"ha_vm_monitoring": "vmMonitoringOnly",
"ha_vm_tools_monitoring": [
"vmAndAppMonitoring"
],
"hosts": [
{
"folder": "/Datacenter/host/Cluster1",
"name": "host1"
},
{
"folder": "/Datacenter/host/Cluster1",
"name": "host2"
},
{
"folder": "/Datacenter/host/Cluster1",
"name": "host3"
},
{
"folder": "/Datacenter/host/Cluster1",
"name": "host4"
}
],
"resource_summary": {
"cpuCapacityMHz": 144000,
},
"tags": [],
"vsan_auto_claim_storage": false
}
},
"invocation": {
"module_args": {
"cluster_name": "Cluster1",
}
}
}
我试过了:
- debug:
msg: "{{ cluster_info.clusters.[].hosts.name | length }}"
- debug:
msg: "{{ cluster_info.clusters.*.hosts.name | length }}"
两者都在模板化字符串时给我模板错误......此外,任何关于教程等的建议以学习如何解析 json 将不胜感激。这对我来说似乎是一个困难的话题。有任何想法吗?
解决方案
与您尝试的方法类似的一种方法是使用json_query
. 我了解您想打印主机数,因此.name
您的代码中不需要:
- name: print count of hosts
debug:
var: cluster_info.clusters | json_query('*.hosts') | first | length
json_query
返回一个列表,这就是我们将它传递给first
before的原因length
。
推荐阅读
- c# - 将 Form1 转换为 Form2
- java - 为什么这个测试会通过?
- wordpress - Gravity Forms - 将字段条目显示为实时预览
- react-native - 处理抽屉导航器时获取参数未定义
- charts - 如何使用 gnuplot 中的列来分隔绘图
- java - 我们可以将 EAR 中的 lib jar 与 Websphere 中的共享库引用结合起来吗?
- javascript - Javascript在while循环中改变不透明度不起作用
- firebase - 如何修复 Firebase Analytics 插件安装错误
- python - 如何将列表组合并转换为一个数据框?
- c# - 我正在尝试使用正则表达式捕获字符串。以下是我试图从中提取数据的文本文件示例