我们Zabbix环境的最新更新破坏了一些以前由比我更高级的人编写的脚本,我目前仍在尝试使用返回的值。
我从一个足够简单的 API 调用开始,它返回以下字典:
webscenario = {
u'httptestid': u'254',
u'steps': [
{
u'query_fields': [],
u'name': u'GET Alert',
u'no': u'1',
u'url': u'http://{HOST.DNS}/{API}',
u'follow_redirects': u'1',
u'variables': []
u'required': u'aries',
u'posts': u'',
u'retrieve_mode': u'0',
u'httpstepid': u'700',
u'headers': [],
u'post_type': u'0',
u'timeout': u'15s',
u'status_codes': u'200',
u'httptestid': u'254'
}
],
u'name': u'Alerts API',
u'headers': [
{
u'name': u'Content-Type',
u'value': u'application/json'
}
]
}
目标是使用上述 API 调用中返回的数据重新生成自动更新推送的标头。
headers_dict = dict()
headers = webscenario.get("headers")
for h in str(headers).splitlines():
headers_dict.update({h.split(':')[1].strip(): h.split(':')[1].strip())})
print headers_dict
最初,这是写成headers.splitlines()
的,并开始抛出一些错误(如AttributeError: 'list' object has no attribute 'splitlines'
(。一些谷歌搜索,似乎添加字符串标识符解决了该异常。但是现在我遇到了标题的格式问题,我完全陷入了困境。
我得到的标题输出是列表字典(字典列表?
<type 'list'>: [{u'name': u'Content-Type', u'value': u'application/json'}]
我需要做的是构建一个字典
,如下所示:{Content-Type: application/json}
撇开Unicode符号不谈,一旦我可以把它归结为我需要的,我就可以解决这个"问题"(如果它甚至是一个(。
我假设
formatted_headers = dict()
headers = webscenario.get("headers")
for header in headers:
formatted_headers[header['name']] = header['value']
足以实现您需要实现的目标,对吧?