2017-06-02 40 views
1

我很困惑,不知道如何解決這個錯誤。我試圖抓住JSON響應列表中的每個名字。列表標記必須是整數。不str str的JSON響應

我的代碼看起來像這樣。

def extract_strucutres_ids(expected_structures): 
    response = requests.get(JIRA_REST + "/structures", verify=False) 
    response = response.json() 
    for structure in response['structures']: 
     print structure['name'] 

Json響應看起來像這樣。

{ 
    "structures": [{ 
      "id": 165, 
      "name": "6.2 External Notifications Refactor", 
      "description": "" 
     }, { 
      "id": 364, 
      "name": "6.4 Day/Night Mode and Idle Scene Mode", 
      "description": "", 
      "readOnly": true 
     }, { 
      "id": 140, 
      "name": "ACC 5 Regression", 
      "description": "" 
     } 
    ] 
} 

我總是收到List indicies must be integers, not str。 Python版本2.7.10

+0

請在'response ['strucutres']'中修正錯字。應該是'結構'。 – codekaizer

+1

,而'response'可能會像字典一樣,它可能是一個字符串。這可以通過打印'response'類型來確認:'print(type(response))'。 –

回答

2

試試這個 -

import json 

def extract_strucutres_ids(expected_structures): 
    response = requests.get(JIRA_REST + "/structures", verify=False) 
    if response.status_code==200: 
     response_json = json.loads(response.text) 
     for structure in response_json['structures']: 
      print structure['name'] 
    else: 
     print("Response is {}".format(response.status_code)) 

讓我知道,如果它的工作!

+0

它的工作原理!謝謝! –

0

使用json.loads()

response = requests.get(..) 
response = json.loads(response.text) # response.text is a string 
for structure in response['structures']: 
    # Do something 
+0

我得到了錯誤「期望的字符串或緩衝區」在線響應= json.loads(response.json()) –

+0

@ j.doe,修改我的答案使用'response.text'而不是 – codekaizer

相關問題