2016-08-22 87 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()