遍历一个json数组 python
时间: 2023-05-08 09:01:42 浏览: 317
遍历一个json数组其实就是遍历一个列表,我们可以用for循环遍历这个列表,然后依次获取每一个元素的值。在python中,使用json库可以把JSON字符串转换成Python对象,如下所示:
```python
import json
json_str = '[{"name": "Tom", "age": 18}, {"name": "Jack", "age": 20}]'
json_arr = json.loads(json_str)
for item in json_arr:
print(item['name'], item['age'])
```
上面的代码中,我们将一个JSON字符串解析成json对象,然后遍历json对象中的每一个元素,使用字典的方式获取name和age属性的值。在每次循环中,我们可以对当前元素进行任何操作,例如输出其属性值或者调用其方法。
需要注意的是,如果JSON文件较大,建议使用流式JSON解析器来遍历JSON数组,以提高性能和减小内存消耗。我们可以使用Python内置的json.JSONDecoder类来实现流式JSON解析的功能,如下所示:
```python
import json
json_str = '[{"name": "Tom", "age": 18}, {"name": "Jack", "age": 20}]'
decoder = json.JSONDecoder()
pos = 0
while True:
try:
obj, pos = decoder.raw_decode(json_str, pos)
print(obj['name'], obj['age'])
except json.JSONDecodeError:
break
```
在这个例子中,我们使用了一个while循环,每次使用JSONDecoder的raw_decode方法从json_str中解析出一个json对象,然后输出其属性值。由于raw_decode方法返回一个元组,其中第二个元素表示解码后的json对象在字符串中所在的位置,可以用来更新pos变量。当解码失败时,会引发JSONDecodeError,从而跳出循环。需要注意的是,在使用streaming JSON解析器时,我们需要手动处理句柄的读取和关闭,以避免内存泄漏等问题。
阅读全文