2016-08-22 113 views
-2

我有一些JSON文本我想遍歷,以下列方式格式化:迭代通過的Json列表對象 - Python的

{ 
    "itemsPerPage": 45, 
    "links": { 
    "next": "https://www.12345.com" 
    }, 
    "list": [ 
    { 
     "id": "333333", 
     "placeID": "63333", 
     "description": " ", 
     "displayName": "test-12345", 
     "name": "test", 
     "status": "Active", 
     "groupType": "Creative", 
     "groupTypeV2": "Public", 
     "memberCount": 1, 
    }, 
    { 
     "id": "32423", 
     "placeID": "606", 
     "description": " ", 
     "displayName": "test123", 
     "name": "test", 
     "status": "Active", 
     "groupType": "Creative", 
     "groupTypeV2": "Private", 
     "memberCount": 1, 
    }, 

我想通過這個列表進行迭代,並且然而搶顯示名,我代碼將無法識別所有不同的顯示名稱。這裏是我的代碼:

for i in range(len(json_obj['list'])): 
if (json_obj['list'][i]['displayName'] == "some id"): 
    do stuff 
else: 
    exit() 

我該如何修復語句,以便成功循環json obj?

+0

這不是一個有效的JSON對象。 –

+0

是什麼讓它不是一個有效的obj? – pokemongirl1234

+0

如何使用此obj來迭代並查找顯示名稱? – pokemongirl1234

回答

0

雖然您發佈的JSON無效,但我會假設您留下了一些內容。

for entry in dataset['list']: 
    print(entry['displayName']) 

將通過您的JSON數據循環。

如果你想do_stuff(),如果它一定的值相匹配:

for entry in dataset['list']: 
    if entry['displayName'] == 'test-12345': 
     do_stuff() 
+0

是條目只是一個隨機變量? – pokemongirl1234

+0

是的 - 我循環遍歷數據集中的每個對象['list'] - 在每個循環中,當前對象被命名爲'entry'。你可以任意調用它。 –

+1

@ pokemongirl1234是的。他選擇了名稱條目,因爲列表中的每個對象都是條目。 – u8y7541

0

這是爲我工作。

import json 
text = """{ 
    "itemsPerPage": 45, 
    "links": { 
    "next": "https://www.12345.com" 
    }, 
    "list": [ 
    { 
     "id": "333333", 
     "placeID": "63333", 
     "description": " ", 
     "displayName": "test-12345", 
     "name": "test", 
     "status": "Active", 
     "groupType": "Creative", 
     "groupTypeV2": "Public", 
     "memberCount": 1 
    }, 
    { 
     "id": "32423", 
     "placeID": "606", 
     "description": " ", 
     "displayName": "test", 
     "name": "test", 
     "status": "Active", 
     "groupType": "Creative", 
     "groupTypeV2": "Private", 
     "memberCount": 1 
    }]}""" 
data = json.loads(text) 
for item in data['list']: 
    if 'displayName' in item: 
     print(item['displayName']) 
+0

更新了新錯誤 – pokemongirl1234

0

您需要在循環中實際執行操作。 Python依賴於空白來表示塊。這是寫Python時你不能忘記的東西。

for i in range(len(json_obj['list'])): 
if (json_obj['list'][i]['displayName'] == "some id"): 
    do stuff 
else: 
    exit() 

應該

for i in range(len(json_obj['list'])): 
    if (json_obj['list'][i]['displayName'] == "some id"): 
     do stuff 
    else: 
     exit()