python - Azure Runbooks - 解析 Python 参数
问题描述
我有一本运行手册,我试图基本上解析我进入 POST 请求正文的参数(使用 Postman)。我查看了此线程,但无法使其正常工作。
我试图获取参数的运行手册的代码:
mode = str(sys.argv[1])
resource_group_name = str(sys.argv[2])
vm_name = str(sys.argv[3])
错误信息:
在 raw_decode obj 中,end = self.scan_once(s, idx)ValueError: Expecting property name: line 1 column 2 (char 1)
解决方案
这是因为当您将 json 从 postman 传递给 runbook 时,runbook 会将整个 json 字符串作为一个参数,您可以使用它print(sys.argv[1])
来检查此行为。输出如下:
在您的情况下,有一种解决方法。得到输入参数后,得到这个部分RequestBody:
,这个:{"resource_group_name":"vv1","vm_name":"vv2"},这是一个json字符串然后你可以解析json字符串,得到你的值想。
示例代码如下:
import sys
import json
#view the input parameter
print(sys.argv[1])
input_str = sys.argv[1]
# use "1" in index() method, to ignore the first { symbol in the input parameter
start_str = input_str.index("{",1)
end_str = input_str.index("}",1)
str = input_str[start_str:end_str+1]
text = json.loads(str)#parse the json string
#check the value
print("resource_group_name: "+text["resource_group_name"])
print("vm_name: "+text["vm_name"])
测试结果如下:
推荐阅读
- python - 在 Pydub 和 Librosa 之间转换音频文件
- reactjs - 使用 useMemo 或 useCallback VS useRef 清空依赖项
- javascript - 从用户 Node.js 接收和处理数据
- visual-studio - 为什么包管理器控制台会提示我启用包还原修复?
- javascript - 查找总和为给定数量数组发行的最小数量的纸币和价值
- windows - 为什么连续调用 SetForegroundWindow 不起作用?
- java - 我应该使用哪种图形算法来找到通过所有给定目的地的最快路线?
- c - 了解 SISL 库中的原型/函数语法
- python-3.x - 你如何让 pytest 像 python 一样理解 python 模块?
- javascript - 在 vuejs 中,输入事件触发在列表中不起作用