我想操縱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