JSON 到 CSV 扁平化嵌套 JSON

作者:编程家 分类: js 时间:2025-07-10

一篇关于将 JSON 转换为 CSV 并扁平化嵌套 JSON 的文章,并附带案例代码。本文将分为三个段落进行阐述。

将 JSON 转换为 CSV

JSON(JavaScript Object Notation)是一种用于存储和交换数据的轻量级格式。然而,当我们需要对大量数据进行分析或处理时,更适合使用 CSV(Comma Separated Values)格式。CSV 格式由纯文本数据组成,每行表示一条记录,每个字段由逗号分隔。

为了将 JSON 转换为 CSV,我们需要使用编程语言提供的 JSON 解析库和 CSV 导出库。例如,Python 中的 json 模块可以帮助我们解析 JSON 数据,而 csv 模块可以帮助我们导出 CSV 文件。

下面是一个简单的 Python 代码示例,演示了如何将 JSON 数据转换为 CSV 格式:

python

import json

import csv

# 假设我们有一个包含 JSON 数据的文件 data.json

with open('data.json') as json_file:

data = json.load(json_file)

# 假设 JSON 数据是一个列表,每个元素都是一个字典

# 我们将使用字典的键作为 CSV 文件的列名

csv_file = open('data.csv', 'w', newline='')

csv_writer = csv.DictWriter(csv_file, fieldnames=data[0].keys())

csv_writer.writeheader()

csv_writer.writerows(data)

csv_file.close()

通过这段代码,我们可以将名为 `data.json` 的 JSON 文件转换为名为 `data.csv` 的 CSV 文件。

扁平化嵌套 JSON

JSON 数据有时会包含嵌套的结构,其中一个字段的值本身又是一个 JSON 对象。在某些情况下,我们可能需要将嵌套的 JSON 扁平化,以便更好地处理数据。

为了实现这一目标,我们可以使用递归算法来遍历嵌套的 JSON,并将嵌套的字段展开为顶层字段。然后,我们可以将扁平化后的 JSON 转换为 CSV 格式,以便进行进一步的分析。

下面是一个示例代码,展示了如何扁平化嵌套的 JSON 数据:

python

def flatten_json(data, prefix=''):

flattened = {}

for key, value in data.items():

new_key = prefix + '_' + key if prefix else key

if isinstance(value, dict):

flattened.update(flatten_json(value, prefix=new_key))

else:

flattened[new_key] = value

return flattened

# 假设我们有一个嵌套的 JSON 对象

nested_json = {

'name': 'John',

'age': 30,

'address': {

'street': '123 Main St',

'city': 'New York',

'country': 'USA'

}

}

# 扁平化嵌套的 JSON

flattened_json = flatten_json(nested_json)

print(flattened_json)

通过上述代码,我们可以将嵌套的 JSON 对象 `nested_json` 扁平化为一个只包含顶层字段的字典 `flattened_json`。

案例代码

在本案例中,我们将使用 Python 编程语言来将 JSON 转换为 CSV 格式,并展示如何扁平化嵌套的 JSON 数据。我们假设有一个名为 `data.json` 的 JSON 文件,其中包含一个嵌套的 JSON 对象列表。

python

import json

import csv

# 从 JSON 文件中加载数据

with open('data.json') as json_file:

data = json.load(json_file)

# 扁平化嵌套的 JSON

def flatten_json(data, prefix=''):

flattened = {}

for key, value in data.items():

new_key = prefix + '_' + key if prefix else key

if isinstance(value, dict):

flattened.update(flatten_json(value, prefix=new_key))

else:

flattened[new_key] = value

return flattened

# 将 JSON 数据转换为 CSV

csv_file = open('data.csv', 'w', newline='')

csv_writer = csv.DictWriter(csv_file, fieldnames=flatten_json(data[0]).keys())

csv_writer.writeheader()

for item in data:

flattened_item = flatten_json(item)

csv_writer.writerow(flattened_item)

csv_file.close()

通过运行上述代码,我们可以从 `data.json` 文件中加载 JSON 数据,并将其转换为 CSV 格式。同时,对于嵌套的 JSON 对象,我们还可以使用 `flatten_json` 函数将其扁平化。

本文介绍了如何将 JSON 数据转换为 CSV 格式,并演示了如何扁平化嵌套的 JSON 数据。通过使用适当的编程语言和相关库,我们可以轻松地进行这些操作,以便更好地处理和分析数据。