2012-12-13 3 views
1

사전의 목록을 반환하는 두 개의 함수가 있는데 json을 인코딩하려고합니다. 첫 번째 함수로 시도 할 때 작동하지만 지금은 작동합니다. 구문 오류가 ": expected" 인 두 번째 함수가 추가되었습니다. 나는 결국 각각이 dict의리스트를 출력하는 총 7 개의 함수를 덧붙일 것이다. 이것을 성취하는 더 좋은 방법이 있습니까?dict의 목록을 추가 할 때 파이썬 json 덤프 덤프

import dmidecode 
import simplejson as json 

def get_bios_specs(): 
    BIOSdict = {} 
    BIOSlist = [] 
    for v in dmidecode.bios().values(): 
     if type(v) == dict and v['dmi_type'] == 0: 
      BIOSdict["Name"] = str((v['data']['Vendor'])) 
      BIOSdict["Description"] = str((v['data']['Vendor'])) 
      BIOSdict["BuildNumber"] = str((v['data']['Version'])) 
      BIOSdict["SoftwareElementID"] = str((v['data']['BIOS Revision'])) 
      BIOSdict["primaryBIOS"] = "True" 

      BIOSlist.append(BIOSdict) 
    return BIOSlist 

def get_board_specs(): 
    MOBOdict = {} 
    MOBOlist = [] 
    for v in dmidecode.baseboard().values(): 
     if type(v) == dict and v['dmi_type'] == 2: 
      MOBOdict["Manufacturer"] = str(v['data']['Manufacturer']) 
      MOBOdict["Model"] = str(v['data']['Product Name']) 

      MOBOlist.append(MOBOdict) 
    return MOBOlist 


def get_json_dumps(): 
    jsonOBJ = json 

    #Syntax error is here, i can't use comma to continue adding more, nor + to append. 
    return jsonOBJ.dumps({'HardwareSpec':{'BIOS': get_bios_specs()},{'Motherboard': get_board_specs()}}) 

답변

1

중첩 된 사전 내에 여러 항목을 사용하십시오. 당신이 BIOS 항목이나 Motherboard 항목, 여러하려는 경우

jsonOBJ.dumps({ 
    'HardwareSpec': { 
     'BIOS': get_bios_specs(), 
     'Motherboard': get_board_specs() 
    } 
}) 

은 단지 목록을 사용합니다. 당신이 사양보다 편리하게 조회를 원하는 경우

... 
    'HardwareSpec': { 
     'BIOS': [ 
      get_bios_specs(), 
      get_uefi_specs() 
     ] 
     ... 
    } 
+0

감사하지만이 나에게 JSON "의 형식을 제공합니다 -> HardwareSpec -> 0 - BIOS를 -> ..., "마더 보드 -> ..." "Json -> HardwareSpec -> BIOS - 0 -> ..., 마더 보드 - 0 -> ..." 감각 .. – Dayan

+0

@ 대연 : 그렇습니다. 예를 들어 답을 편집했습니다. – voithos

+0

감사합니다. 좋은 예입니다. 나는 2 번째를 좋아합니다! – Dayan

1

, 당신은 DICT 포함 바로 할 수 있습니다

jsonOBJ.dumps({'HardwareSpec':{'BIOS': get_bios_specs(), 
    'Motherboard': get_board_specs() 
    } 
})