我有一个运行本,并且我试图基本上解析输入到POST请求正文中的参数(使用Postman)。我看着这个thread,但无法正常工作。
我试图获取参数的Runbook代码:
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:预期 属性名称:第1行第2列(字符1)
答案 0 :(得分:1)
这是因为当您将json从邮递员传递到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"])
测试结果如下: