2017-12-26 4 views
0

json에서 데이터를 파싱하려고 시도했지만 json.load 세트에서 데이터를 가져 오는 데 어려움을 겪고 있습니다.Python json 데이터가있는 TypeError

for obj in menus: 
    if("parent_id" not in obj): 
     rootItem = {"root_id": obj["id"], "child_ids": obj["child_ids"]} 
     roots.append(rootItem.copy()) 
    else: 
     for r in roots: 
      if(obj["parent_id"] == r["root_id"]): 
       r["child_ids"].append(obj["child_ids"]) 

rootItem 줄에서 수신합니다. typeError : 목록 인덱스는 str이 아닌 정수 여야합니다.

왜 나는 값이 obj에서 가져온 사전을 만들고 있는지 잘 모르겠습니다.

도움이 될 것입니다.

편집 : 이것은 json 출력에 다시 넣으려는 사전을 만들고 액세스하려는 데이터의 샘플입니다.

[[ 
{"child_ids": [3], "data": "House", "id": 1}, 
{"child_ids": [4, 5, 8], "data": "Company", "id": 2}, 
{"child_ids": [7], "parent_id": 1, "data": "Living Room", "id": 3}, 
{"child_ids": [], "parent_id": 2, "data": "Meeting Rooms", "id": 4} 
]] 
+2

사전을 만들었지 만 아마도 당신은 * 목록 * :'obj'에 접근하고있을 것입니다. 적절한 도움을 얻으려면 사용하려는 데이터를 표시해야합니다. –

답변

0

실제로 목록 내에서 목록을 반복하고 있습니다. 내부 목록의 사전을 반복하려면 for obj in menus[0]:과 같은 작업을 수행해야합니다 (menus 내에 하나의 목록 만있는 경우 적용 가능).