2016-08-22 2 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, 
    }, 

Я пытаюсь перебирать этот список, и захватить DISPLAYNAME, однако мой код не распознает все разные отображаемые имена. Вот мой код:

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

Как я могу использовать этот объект, чтобы перебрать и найти отображаемое имя? – 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() 
Смежные вопросы