У меня проблемы с получением моего JSON вывода в точности так, как должно быть. Я пытаюсь проанализировать файл Excel, используя python, для создания вывода JSON. Это для крупномасштабного проекта, над которым я работаю сейчас, и он значительно ускорит процесс. Я ценю любой ввод :).
Это мой желаемый результат:
"classes": [
{
"name": "Defend Class 2",
"cohort": 1,
"root_folder": "DF-L2-C1",
"template_prefix": "template.",
"vm_prefix":"student-",
"resource_pool":"S1-DC-LMS2CL-001",
"pods": 22,
"vds": "S1-DC-LMS2DVS-001",
"portgroup_base": "LAB-PS-DEF-",
"vlans": {
"required": 4,
"start": 1500,
"end": 1587,
"rcn_start": 1303
},
Однако это то, что я сейчас получаю: борется с идентифицированной частью "вланов". Ниже приведен код, который у меня есть:
import xlrd
from collections import OrderedDict
import simplejson as json
wb = xlrd.open_workbook('test.xlsx')
classes = wb.sheet_by_index(0)
vms_list = []
for rownum in range(1, classes.nrows):
vms = OrderedDict()
row_values = classes.row_values(rownum)
vms['name'] = row_values[0]
vms['cohort'] = int(row_values[1])
vms['root_folder'] = row_values[2]
vms['template_prefix'] = row_values[3]
vms['vm_prefix'] = row_values[4]
vms['resource_pool'] = row_values[5]
vms['pods'] = int(row_values[6])
vms['vds'] = row_values[7]
vms['portgroup_base'] = row_values[8]
vlan_list = []
for rownum in range(1, classes.nrows):
vlan = OrderedDict()
row_values = classes.row_values(rownum)
vlan['required'] = int(row_values[9])
vlan['start'] = int(row_values[10])
vlan['end'] = int(row_values[11])
vlan['rcn_start'] = int(row_values[12])
vlan_list.append(vlan)
vlan_list = {'vlans': vlan_list}
vms_list.append(vms)
vms_list = {'classes' : vms_list}
j = json.dumps(vms_list, indent=4)
with open('data.json', 'w') as f:
f.write(j)
Есть идеи? Спасибо!