我想操纵JSON数据以匹配Ansible的特定格式。我是一般的Python和编程新手。我似乎无法弄清楚如何做到这一点。这里是我的培训相关代码:使用python操纵JSON
import os
import sys
import argparse
import ConfigParser
try:
import json
except ImportError:
import simplejson as json
import requests
payload = 'query=SELECT+TOP+10+IPAddress,+Vendor+FROM+Orion.Nodes'
url = "https://10.150.199.44:17778/SolarWinds/InformationService/v3/Json/Query"
req = requests.get(url, params=payload, verify=False, auth=('dmitry', 'security'))
jsonget = req.json()
def get_list(self):
hostsData = jsonget
print "Test json before manipulation:\n"
print(hostsData)
print "\n\n"
for item in hostsData['results']:
print '' + item['Vendor']
for item in hostsData['results']:
print 'hosts:' + item['IPAddress']
这是我的输出:
./swinds.py --list
Test json before manipulation:
{u'results': [{u'Vendor': u'Cisco', u'IPAddress': u'10.150.190.2'}, {u'Vendor': u'Cisco', u'IPAddress': u'10.150.250.3'}, {u'Vendor': u'Unknown', u'IPAddress': u'10.255.255.42'}, {u'Vendor': u'Juniper Networks/NetScreen', u'IPAddress': u'10.58.1.1'}, {u'Vendor': u'Cisco', u'IPAddress': u'10.33.93.1'}, {u'Vendor': u'Cisco', u'IPAddress': u'10.33.93.2'}, {u'Vendor': u'Unknown', u'IPAddress': u'10.33.93.3'}, {u'Vendor': u'Cisco', u'IPAddress': u'10.33.93.4'}, {u'Vendor': u'Unknown', u'IPAddress': u'10.33.93.6'}, {u'Vendor': u'Cisco', u'IPAddress': u'10.33.93.7'}]}
Cisco
hosts:10.150.190.2
hosts:10.150.250.3
hosts:10.255.255.42
hosts:10.58.1.1
hosts:10.33.93.1
hosts:10.33.93.2
hosts:10.33.93.3
hosts:10.33.93.4
hosts:10.33.93.6
hosts:10.33.93.7
Cisco
hosts:10.150.190.2
hosts:10.150.250.3
hosts:10.255.255.42
hosts:10.58.1.1
hosts:10.33.93.1
hosts:10.33.93.2
hosts:10.33.93.3
hosts:10.33.93.4
hosts:10.33.93.6
hosts:10.33.93.7
Unknown
...
我试图做的是输出这样的Ansible可以阅读:
{
"Cisco" : {
"hosts" : [ "10.150.190.2", "10.150.250.3" ],
},
"Unknown" :
"hosts" : [ "10.255.255.42" ],
},
感谢您的任何帮帮我。
CB
是该服务器的真实凭据,是URL实际上真正的? :O – tar
老兄...........发布前匿名化数据.......... –
'10.0.0.0/24'是专用网络...... – njzk2