以下是一个示例代码,用于遍历JSON并将其转换为CSV格式:
import json
import csv
def traverse_json(json_data, csv_writer, parent_key=''):
if isinstance(json_data, dict):
for key, value in json_data.items():
new_key = f"{parent_key}.{key}" if parent_key else key
traverse_json(value, csv_writer, new_key)
elif isinstance(json_data, list):
for index, item in enumerate(json_data):
new_key = f"{parent_key}[{index}]" if parent_key else f"[{index}]"
traverse_json(item, csv_writer, new_key)
else:
csv_writer.writerow([parent_key, json_data])
# 从JSON文件加载数据
with open('data.json') as json_file:
data = json.load(json_file)
# 创建CSV文件并写入数据
with open('data.csv', 'w', newline='') as csv_file:
writer = csv.writer(csv_file)
traverse_json(data, writer)
这个示例代码中,我们定义了一个traverse_json
函数来遍历JSON数据。它使用递归的方式来处理嵌套的键值对和列表。当遇到字典类型的数据时,我们将键名添加到parent_key
中,并继续遍历其值。当遇到列表类型的数据时,我们使用索引来作为键名,并继续遍历列表中的每个元素。当遇到其他类型的数据时,我们将键名和数值写入CSV文件。
在主程序中,我们首先从JSON文件中加载数据。然后,我们创建一个CSV文件,并使用csv.writer
对象来写入数据。我们将traverse_json
函数传递给csv.writer
对象来处理数据转换。最后,我们将数据写入到CSV文件中。
请注意,此示例代码假设JSON数据是有效的,并且不包含循环引用或其他复杂情况。在实际使用中,您可能需要根据您的数据结构进行适当的修改。
上一篇:遍历JSON并解析键值对