我一直在尝试使用Python解码Collections + JSON格式的JSON响应一段时间,但我似乎无法克服一个小问题。
首先,这是JSON响应:
{
"collection": {
"href": "http://localhost:8000/social/messages-api/",
"items": [
{
"data": [
{
"name": "messageID",
"value": 19
},
{
"name": "author",
"value": "mike"
},
{
"name": "recipient",
"value": "dan"
},
{
"name": "pm",
"value": "0"
},
{
"name": "time",
"value": "2015-03-31T15:04:01.165060Z"
},
{
"name": "text",
"value": "first message"
}
]
}
],
"version": "1.0",
"links": []
}
}
以下是我尝试提取数据的方式:
response = urllib2.urlopen('myurl')
responseData = response.read()
jsonData = json.loads(responseData)
test = jsonData['collection']['items']['data']
当我运行此代码时,我收到错误:
list indices must be integers, not str
如果我使用整数,例如0
,而不是字符串,它只显示'data'
而不是任何有用的信息,不像我只是输出'items'
。同样,我似乎无法访问数据子中的数据,例如:
test = jsonData['collection']['items'][0]['name']
这将证明没有名为'name'
的元素。
在这种情况下访问JSON数据的正确方法是什么?如果有帮助,我还想迭代收集。
我知道有一个软件包可用于简化在Python中使用Collections + JSON collection-json
,但我宁愿能够在不使用这样的软件包的情况下完成此任务。