欢迎访问宙启技术站
智能推送

Python全面解析json数据并保存为csv文件

发布时间:2023-05-14 19:03:25

JSON 数据已经成为 Web 应用程序中的标准数据格式之一。Python 作为一种高级编程语言,自然可以很好地处理 JSON 数据。本文将介绍如何使用 Python 对 JSON 数据进行解析,并将其保存为 CSV 文件。

1.解析 JSON 数据

Python 中的 json 模块提供了将 JSON 数据转换为 Python 对象的函数。以下是一个示例 JSON 数据:

{
    "name": "John",
    "age": 30,
    "city": "New York",
    "pets": [
        {
            "name": "Fluffy",
            "species": "cat"
        },
        {
            "name": "Fido",
            "species": "dog"
        }
    ]
}

以下代码演示如何将 JSON 数据解析为 Python 对象:

import json

# JSON 数据字符串
json_str = '{ "name": "John", "age": 30, "city": "New York", "pets": [{ "name": "Fluffy", "species": "cat" }, { "name": "Fido", "species": "dog" }] }'

# 解析 JSON 数据
data = json.loads(json_str)

# 输出 Python 对象
print(data)

这将输出如下 Python 对象:

{
    "name": "John",
    "age": 30,
    "city": "New York",
    "pets": [
        {
            "name": "Fluffy",
            "species": "cat"
        },
        {
            "name": "Fido",
            "species": "dog"
        }
    ]
}

注意,Python 对象使用与 JSON 数据相同的格式。例如,将 JSON 数据中的 “name” 键映射到 Python 对象中的字典键。

2. 保存为 CSV 文件

现在我们已经将 JSON 数据解析为 Python 对象,可以将其转换为 CSV 格式并将其保存为文件。以下示例代码将解析的 JSON 对象转换为 CSV 格式,并将其保存到文件中。

import json
import csv

# JSON 数据字符串
json_str = '{ "name": "John", "age": 30, "city": "New York", "pets": [{ "name": "Fluffy", "species": "cat" }, { "name": "Fido", "species": "dog" }] }'

# 解析 JSON 数据
data = json.loads(json_str)

# 转换为列表格式
csv_list = []

# 添加标题行
csv_list.append(["name", "age", "city", "pets"])

# 将数据添加到列表中
csv_list.append([data["name"], str(data["age"]), data["city"], str(data["pets"])])

# 保存为 CSV 文件
with open('data.csv', 'w') as file:
    writer = csv.writer(file)
    writer.writerows(csv_list)

这将在当前工作目录中创建一个名为 data.csv 的文件,并包含以下内容:

name,age,city,pets
John,30,New York,[{'name': 'Fluffy', 'species': 'cat'}, {'name': 'Fido', 'species': 'dog'}]

3. 处理嵌套 JSON 数据

上面的示例非常简单,因为 JSON 数据没有太多的嵌套。但是,当 JSON 数据变得更加复杂时,我们需要找到一种方法来处理嵌套的对象和嵌套的列表。以下示例展示如何从嵌套的 JSON 对象中提取数据并将其保存为 CSV 文件。

import json
import csv

# 嵌套 JSON 数据字符串
json_str = '{ "name": "John", "age": 30, "city": "New York", "pets": [{ "name": "Fluffy", "species": "cat", "toys": [{ "name": "ball", "size": "small" }, { "name": "scratcher", "size": "medium" }] }, { "name": "Fido", "species": "dog", "toys": [{ "name": "bone", "size": "large" }, { "name": "rope", "size": "medium" }] }] }'

# 解析 JSON 数据
data = json.loads(json_str)

# 转换为列表格式
csv_list = []

# 添加标题行
csv_list.append(["name", "age", "city", "pet_name", "pet_species", "pet_toy_name", "pet_toy_size"])

# 处理嵌套 JSON 数据
for pet in data["pets"]:
    pet_name = pet["name"]
    pet_species = pet["species"]
    for toy in pet["toys"]:
        toy_name = toy["name"]
        toy_size = toy["size"]
        csv_list.append([data["name"], str(data["age"]), data["city"], pet_name, pet_species, toy_name, toy_size])

# 保存为 CSV 文件
with open('data.csv', 'w') as file:
    writer = csv.writer(file)
    writer.writerows(csv_list)

这将在当前工作目录中创建一个名为 data.csv 的文件,并包含以下内容:

name,age,city,pet_name,pet_species,pet_toy_name,pet_toy_size
John,30,New York,Fluffy,cat,ball,small
John,30,New York,Fluffy,cat,scratcher,medium
John,30,New York,Fido,dog,bone,large
John,30,New York,Fido,dog,rope,medium

4. 结论

Python 的 json 模块和 csv 模块可用于解析和保存 JSON 和 CSV 文件。本文提供了一个简单的示例代码,说明如何解析 JSON 数据并将其保存为 CSV 文件。如果在处理 JSON 数据时也运用 Python 中的其他模块,您可以更轻松地转换数据格式和保存数据。