我们可以使用递归方法来遍历JSON对象,并将路径作为参数传递到递归函数中。下面是一个示例代码:
def traverse_json(obj, path=''):
if isinstance(obj, dict): # 对象是字典类型
for key in obj:
traverse_json(obj[key], path + '.' + key) # 递归调用
elif isinstance(obj, list): # 对象是列表类型
for i in range(len(obj)):
traverse_json(obj[i], path + '[' + str(i) + ']') # 递归调用
else: # 对象是基本类型
print(path + '=' + str(obj)) # 输出路径和值
假设我们要遍历以下JSON对象:
{
"name": "John",
"age": 30,
"cars": [
{"model": "BMW", "year": 2018},
{"model": "Tesla", "year": 2019}
],
"address": {
"city": "New York",
"street": "Fifth Avenue"
}
}
我们可以这样调用 traverse_json 函数:
import json
json_str = """{
"name": "John",
"age": 30,
"cars": [
{"model": "BMW", "year": 2018},
{"model": "Tesla", "year": 2019}
],
"address": {
"city": "New York",
"street": "Fifth Avenue"
}
}"""
json_obj = json.loads(json_str)
traverse_json(json_obj)
遍历时,我们可以获得以下输出:
.name=John
.age=30
.cars[0].model=BMW
.cars[0].year=2018
.cars[1].model=Tesla
.cars[1].year=2019
.address.city=New York
.address.street=Fifth Avenue