以下是一个示例代码,展示了如何遍历嵌套的JSON对象数组,并将其存储为键值对:
import json
def flatten_json(json_obj, parent_key='', sep='_'):
# 存储结果的字典
result = {}
# 遍历JSON对象
for key in json_obj:
# 拼接键名
new_key = f"{parent_key}{sep}{key}" if parent_key else key
# 如果值是字典类型,则进行递归调用
if isinstance(json_obj[key], dict):
nested_dict = flatten_json(json_obj[key], new_key, sep)
result.update(nested_dict)
# 如果值是列表类型,则遍历其中的每个元素,并进行递归调用
elif isinstance(json_obj[key], list):
for i, item in enumerate(json_obj[key]):
nested_dict = flatten_json(item, f"{new_key}{sep}{i}", sep)
result.update(nested_dict)
# 否则,将键值对存储到结果字典中
else:
result[new_key] = json_obj[key]
return result
# 示例JSON对象数组
json_data = [
{
"name": "John",
"age": 30,
"address": {
"street": "123 Street",
"city": "New York"
},
"hobbies": ["reading", "running"]
},
{
"name": "Jane",
"age": 25,
"address": {
"street": "456 Street",
"city": "Los Angeles"
},
"hobbies": ["swimming", "painting"]
}
]
# 将JSON对象数组转换为键值对
result = flatten_json(json_data)
# 打印结果
for key, value in result.items():
print(f"{key}: {value}")
这个示例代码中的flatten_json
函数通过递归遍历JSON对象数组,将嵌套的键名连接为一个字符串,并将最终的键值对存储在结果字典中。最后,我们遍历结果字典,并打印每个键值对。