如何在Python中寻址多维json数组

2024-06-24 12:42:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我从Python脚本中的查询接收到以下上下文(示例):

{ "active": false, "owner": "user1", "content": [ { "recordType": "test", "record": [ { "id": "1", "date": "Nov 30, 2017 12:00:00 AM", "link": "http://localhost", "Size": 1234, }, { "id": "3", "date": "Nov 21, 2017 06:00:00 AM", "link": "http://localhost", "Size": 3241, } ] } ] }

对json数组执行此操作不会出错:

data = json.loads(*string_above*)

因此,这项工作正常:

^{pr2}$

user1

也可以这样:

print data["content"]

[ { "recordType": "test", "record": [ { "id": "1", "date": "Nov 30, 2017 12:00:00 AM", "link": "http://localhost", "Size": 1234, }, { "id": "3", "date": "Nov 21, 2017 06:00:00 AM", "link": "http://localhost", "Size": 3241, } ]}

现在我的问题是如何使它成为多维数组?在

例如指挥

print data["content"]["record"]

给出错误:

TypeError: list indices must be integers, not str

我希望得到的是:

{ "id": "1", "date": "Nov 30, 2017 12:00:00 AM", "link": "http://localhost", "Size": 1234, }, { "id": "3", "date": "Nov 21, 2017 06:00:00 AM", "link": "http://localhost", "Size": 3241, }

在Google上发现了很多关于这类问题的不同评论,但是没有一个简单的解决方案-我遗漏了什么?在


Tags: testidjsonlocalhosthttpdatasizedate
2条回答

我觉得你很困惑。我们来解决这个问题。返回的初始对象是dict而不是数组(Python语言中的list)。

d = { "active": False, "owner": "user1", "content": [ { "recordType": "test", "record": [ { ": id": "1", "date": "Nov 30, 2017 12:00:00 AM", "link": "http://localhost", "Size": 1234, }, { "id": "3", "date": "Nov 21, 2017 06:00:00 AM", "link": "http://localhost", "Size": 3241, } ] } ] }
isinstance(d, dict)
# True

你从d抓到的东西是list

^{pr2}$

其元素需要使用int引用。因此,要获得data['content']的第一个元素,即dict,您可以

c0 = data['content'][0]
isinstance(c0, dict)
# True

简单答案-data["content"]是一个包含一个元素的list。你可以利用

print data["content"][0]["record"]

您可以使用联机json fromatters(例如this)来探索您的json数据。

相关问题 更多 >