1

我在解析复杂的 json 时遇到了麻烦。这就对了:

{
    "response": {
        "players": [
            {
                "bar": "76561198034360615",
                "foo": "49329432943232423"
            }
        ]

    }
}

我的代码:

url = urllib.urlopen("foobar").read()
js = json.load(url)
data = js['response']
print data['players']

问题是这会打印字典。我想要的是达到键的值,比如fooand bar。到目前为止,我尝试的是做data['players']['foo'],它给了我一个错误,列表索引应该是整数,我当然试过,它没有用。所以我的问题是如何达到这些值?提前致谢。

4

2 回答 2

8

data['response']['players']是一个数组(由方括号 ( [, ]) 定义,因此您需要使用特定索引(在本例中为 0)访问项目:

data['players'][0]['foo']

或者遍历所有玩家:

for player in data['response']['players']:
    print player['foo']
于 2013-04-29T17:51:01.820 回答
3

问题是玩家是一个项目列表([ ]在 json 中)。因此,在这种情况下,您需要使用 选择第一个也是唯一的项目[0]

print data['players'][0]['foo']

但是,请记住,您可能有多个玩家,在这种情况下,您需要指定玩家,或者使用 for 循环遍历玩家

for player in data['players']:
    print player['foo']
于 2013-04-29T17:52:09.530 回答