2017-05-19 5 views
1

JSON 변수 json_text을 구문 분석하려고하는데 change_requests 목록을 만들려고했지만 아래 오류가 발생했습니다. 누구든지이 문제를 해결하는 방법에 대한 지침을 제공 할 수 있습니까?Python에서 JSON을 구문 분석하는 동안 오류가 발생했습니다.

import sys,os,json 
from collections import OrderedDict 
def main(): 
    change_request_list=[] 
    json_text=[OrderedDict([(u'branch', u'wlan-service.lnx.1.1-dev'), (u'change_request_list', [OrderedDict([(u'change_request', u'2028693'), (u'change_request_approval_status', OrderedDict([(u'comment', None), (u'status', None)]))])]), (u'component', u'platform_vendor_qcom-proprietary_ship_wlan_common-tools_wlan-service.lnx.1.1-dev'), (u'description', u'cnss_diag: Capture PKTLOG by default to sdcard'), (u'gerrit', u'1892910'), (u'gerrit_approval_status', OrderedDict([(u'comment', None), (u'status', None)])), (u'owner', u'c_rrajiv'), (u'project', u'platform/vendor/qcom-proprietary/ship/wlan/common-tools'), (u'url', u'https://review-android.quicinc.com/#/c/1892910')]), OrderedDict([(u'branch', u'wlan-service.lnx.1.1-dev'), (u'change_request_list', [OrderedDict([(u'change_request', u'2029177'), (u'change_request_approval_status', OrderedDict([(u'comment', None), (u'status', None)]))])]), (u'component', u'platform_vendor_qcom-proprietary_ship_wlan_common-tools_wlan-service.lnx.1.1-dev'), (u'description', u'pktlog: Close file decription before archiving and creating a new one'), (u'gerrit', u'1895098'), (u'gerrit_approval_status', OrderedDict([(u'comment', None), (u'status', None)])), (u'owner', u'c_rrajiv'), (u'project', u'platform/vendor/qcom-proprietary/ship/wlan/common-tools'), (u'url', u'https://review-android.quicinc.com/#/c/1895098')]), OrderedDict([(u'branch', u'wlan-service.lnx.1.1-dev'), (u'change_request_list', [OrderedDict([(u'change_request', u'2030712'), (u'change_request_approval_status', OrderedDict([(u'comment', None), (u'status', None)]))])]), (u'component', u'platform_vendor_qcom-proprietary_ship_wlan_common-tools_wlan-service.lnx.1.1-dev'), (u'description', u'cnss_diag: Fix copyright header'), (u'gerrit', u'1897531'), (u'gerrit_approval_status', OrderedDict([(u'comment', None), (u'status', None)])), (u'owner', u'c_rrajiv'), (u'project', u'platform/vendor/qcom-proprietary/ship/wlan/common-tools'), (u'url', u'https://review-android.quicinc.com/#/c/1897531')]), OrderedDict([(u'branch', u'wlan-service.lnx.1.1-dev'), (u'change_request_list', [OrderedDict([(u'change_request', u'2032453'), (u'change_request_approval_status', OrderedDict([(u'comment', None), (u'status', None)]))])]), (u'component', u'platform_vendor_qcom-proprietary_ship_wlan_common-tools_wlan-service.lnx.1.1-dev'), (u'description', u'cnss_diag: Printing newly backup packetlog file name.'), (u'gerrit', u'1905895'), (u'gerrit_approval_status', OrderedDict([(u'comment', None), (u'status', None)])), (u'owner', u'c_rrajiv'), (u'project', u'platform/vendor/qcom-proprietary/ship/wlan/common-tools'), (u'url', u'https://review-android.quicinc.com/#/c/1905895')]), OrderedDict([(u'branch', u'wlan-service.lnx.1.1-dev'), (u'change_request_list', [OrderedDict([(u'change_request', u'2033296'), (u'change_request_approval_status', OrderedDict([(u'comment', None), (u'status', None)]))])]), (u'component', u'platform_vendor_qcom-proprietary_ship_wlan_common-tools_wlan-service.lnx.1.1-dev'), (u'description', u'cnss_diag: Configuration for disabling pkt logging on sdcard'), (u'gerrit', u'1905931'), (u'gerrit_approval_status', OrderedDict([(u'comment', None), (u'status', None)])), (u'owner', u'c_rrajiv'), (u'project', u'platform/vendor/qcom-proprietary/ship/wlan/common-tools'), (u'url', u'https://review-android.quicinc.com/#/c/1905931')])] 
    for cr in json_text: 
     print cr 
     change_request = cr['change_request_list']['change_request'] 
     change_request_list.append(change_request) 
    print change_request_list 
if __name__ == '__main__': 
    main() 

오류 : -

Traceback (most recent call last): 
    File "json_parsing.py", line 12, in <module> 
    main() 
    File "json_parsing.py", line 8, in main 
    change_request = cr['change_request_list']['change_request'] 
TypeError: list indices must be integers, not str 

답변

2

당신은 키 JSON 사이 [0] 누락

for cr in json_text: 
    print cr 
    change_request = cr['change_request_list'][0]['change_request'] 
    change_request_list.append(change_request) 
print change_request_list 
관련 문제