如何在Ansible中解析JSON并将Hook IP存入独立变量?
嘿,我来帮你搞定这个问题!既然你已经能从GitHub API的Meta响应里提取出hooks数组,那把每个IP分到单独变量里其实很简单,我给你用几种常用语言举例子:
Python 实现
假设你已经把API返回的JSON数据解析成了Python字典(比如用内置的json模块),直接通过数组索引就能轻松赋值:
import json # 这里模拟你从API获取并解析后的字典数据 github_meta = { "verifiable_password_authentication": True, "github_services_sha": "f9e3a6b98d76d9964a6613d581164039b8d54d89", "hooks": [ "192.30.252.0/22", "185.199.108.0/22", "140.82.112.0/20" ], # 其他字段省略... } # 直接通过索引将每个IP赋值给独立变量 hook_ip1 = github_meta["hooks"][0] hook_ip2 = github_meta["hooks"][1] hook_ip3 = github_meta["hooks"][2] # 可以打印验证结果 print(hook_ip1) # 输出: 192.30.252.0/22
Bash 实现
如果是用Shell脚本处理,搭配curl和jq工具的话,有两种常见方式:
方式1:先提取整个数组再赋值
# 从GitHub API获取数据并解析出hooks数组的所有元素 hooks_array=($(curl -s https://api.github.com/meta | jq -r '.hooks[]')) # 将数组元素分别赋值给独立变量 hook_ip1=${hooks_array[0]} hook_ip2=${hooks_array[1]} hook_ip3=${hooks_array[2]} # 验证变量值 echo $hook_ip1 # 输出: 192.30.252.0/22
方式2:直接单独提取每个IP
如果你已经把完整的JSON数据存在了某个变量里(比如json_data),可以直接用jq定位到每个元素:
# 假设json_data是存储了完整响应的变量 hook_ip1=$(echo "$json_data" | jq -r '.hooks[0]') hook_ip2=$(echo "$json_data" | jq -r '.hooks[1]') hook_ip3=$(echo "$json_data" | jq -r '.hooks[2]')
小提示:如果以后GitHub的hooks IP数量有变化,你也可以用循环来批量处理,但针对你现在明确的3个IP,直接用索引赋值是最直接高效的方案。
内容的提问来源于stack exchange,提问作者Nexus490
相关产品推荐
相关产品推荐

