读取非固定长度组中的特定json元素

时间:2017-11-20 14:06:09

标签: json python-3.x

我正在尝试使用我从API获得的python读取JSON文件中的特定标记,如果它们已修复,我会没有问题,但似乎有时元素跳转我无法做到追求"序列"数字,但必须使用名称来定位它。名称应保持一致。

以下是我目前看到的两种类型,但我确信可能会有更多变化,所以不要依赖

heroID =数据[count] ['播放器'] [0] ['数据'] [8] ['数字']

提取值,我更愿意,寻找" HeroID"的位置。并将其读入变量。

更长的一次

[
{'id': 'HeroBattleTag', 'string': 'TFYoDa#1456'}, 
{'id': 'GameAccount', 'number': 10519139}, 
{'id': 'HeroClass', 'string': 'monk'}, 
{'id': 'HeroGender', 'string': 'f'}, 
{'id': 'HeroLevel', 'number': 70}, 
{'id': 'ParagonLevel', 'number': 1212}, 
{'id': 'HeroClanTag', 'string': 'Sc'}, 
{'id': 'ClanName', 'string': 'Super CasuaI'}, 
{'id': 'HeroId', 'number': 95443875}
]

较短的

[
{'id': 'HeroBattleTag', 'string': 'Michael#1920'}, 
{'id': 'GameAccount', 'number': 96532923}, 
{'id': 'HeroClass', 'string': 'monk'}, 
{'id': 'HeroGender', 'string': 'f'}, 
{'id': 'HeroLevel', 'number': 70}, 
{'id': 'ParagonLevel', 'number': 1062}, 
{'id': 'HeroId', 'number': 95441675}
]

1 个答案:

答案 0 :(得分:0)

我认为我的问题从一开始就存在缺陷,但我能够通过在子json记录上构建迭代来编写代码,同时已经迭代了父代。

count = 0
for i in data:
    character = []
    rank = data[count]['order']   #ladderRank
    accountId = data[count]['player'][0]['accountId'] #accountID
    c = 0
    for k in data[count]['player'][0]['data']:
        if k['id'] == 'HeroId':
            heroID = k['number'] 
            pprint.pprint(heroID)
            break
        else: 
            c = c + 1
            if c > len(data[0]['player'][0]['data']):
                break