首页 > 解决方案 > 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)

标签: pythonjsonazureazure-runbook

解决方案


这是因为当您将 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"])

测试结果如下:

在此处输入图像描述


推荐阅读