Python教程:一文了解Python中的json库

1. JSON简介


  • JSON(JavaScript Object Notation)是一种轻量级数据交换格式,易于人类阅读和编写,也易于计算机解析和生成。
  • 在Python中,JSON通常用于数据交换和存储,因为它与Python的字典和列表类型相似。

2. Python中的json库


  • json库提供了在Python中解析和生成JSON数据的功能。
  • 导入json库:import json

3. JSON编码(序列化)


使用json.dumps()进行JSON对象的编码:

import json

data = {'name': 'Alice', 'age': 30}
json_str = json.dumps(data)
print(json_str)

控制编码过程:indent参数、sort_keys参数等

4. JSON解码(反序列化)


使用json.loads()进行JSON字符串的解码:

import json

json_str = '{"name": "Bob", "age": 25}'
data = json.loads(json_str)
print(data)

控制解码过程:object_hook参数、parse_float参数等

5. 文件操作


读取JSON数据文件:json.load()

with open('data.json', 'r') as file:
    data = json.load(file)

写入JSON数据文件:json.dump()

data = {'name': 'Charlie', 'age': 35}
with open('output.json', 'w') as file:
    json.dump(data, file)

6. 错误处理


处理JSON编解码过程中可能出现的异常:

try:
    data = json.loads(invalid_json_str)
except json.JSONDecodeError as e:
    print(f"JSON decoding error: {e}")

7. json.dump()、json.load()、json.dumps()、json.loads()的关系和区别


  • json.dump() 和 json.load()

json.dump()函数用于将Python数据结构编码为JSON格式并写入文件中。

import json

data = {'name': 'Alice', 'age': 30}
with open('data.json', 'w') as file:
    json.dump(data, file)

这里,data字典被编码为JSON格式并写入名为data.json的文件中。

json.load()函数用于从JSON文件中读取数据并解码为Python数据结构。

with open('data.json', 'r') as file:
    data = json.load(file)

这里,名为data.json的文件被读取并解码为Python数据结构,并赋值给变量data

  • json.dumps() 和 json.loads()

json.dumps()函数用于将Python数据结构编码为JSON格式的字符串。

import json

data = {'name': 'Alice', 'age': 30}
json_str = json.dumps(data)
print(json_str)

这里,data字典被编码为JSON格式的字符串。

json.loads()函数用于将JSON格式的字符串解码为Python数据结构。

json_str = '{"name": "Bob", "age": 25}'
data = json.loads(json_str)
print(data)

这里,名为json_str的JSON格式字符串被解码为Python数据结构,并赋值给变量data

  • json.dump() 和 json.load() 主要用于与文件进行交互,可用于读写JSON文件。
  • json.dumps() 和 json.loads() 主要用于在内存中处理JSON数据,可用于编码和解码JSON格式的字符串。

总的来说,json.dump()json.load() 是与文件交互的函数,而 json.dumps()json.loads() 则是在内存中进行编码和解码的函数。它们共同构成了Python中处理JSON数据的基本工具集。

8、实现JSON文件转成CSV文件


import json
import csv

# 假设你的JSON数据存储在一个文件中,例如data.json
json_file_path = 'data.json'
csv_file_path = 'data.csv'

# 读取JSON数据
with open(json_file_path, 'r', encoding='utf-8') as json_file:
    data = json.load(json_file)

# 确定CSV文件的列名(假设JSON数据是一个包含字典的列表)
if len(data) > 0:
    fieldnames = data[0].keys()
else:
    fieldnames = []

# 写入CSV文件
with open(csv_file_path, 'w', newline='', encoding='utf-8') as csv_file:
    writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
    
    # 写入表头
    writer.writeheader()
    
    # 写入数据行
    for row in data:
        writer.writerow(row)

print(f"JSON数据已成功转换为CSV并保存到 {csv_file_path}")

解释代码:

  1. 读取JSON文件: 使用json.load函数加载JSON文件中的数据。
  2. 确定CSV的列名: 假设JSON数据是一个包含字典的列表,列名即字典的键。如果JSON数据为空,则列名也为空。
  3. 写入CSV文件: 使用csv.DictWriter类创建一个CSV写入器,并使用writeheader方法写入表头,然后遍历JSON数据并逐行写入CSV文件。

注意事项:

  • JSON文件中每个对象(字典)的键必须一致,否则在写入CSV时可能会出现错误。
  • 这个示例假设JSON数据是一个包含字典的列表。如果你的JSON数据结构不同,需要相应地调整代码。

示例输入 (data.json):

[
    {"name": "Alice", "age": 30, "city": "New York"},
    {"name": "Bob", "age": 25, "city": "Los Angeles"},
    {"name": "Charlie", "age": 35, "city": "Chicago"}
]

示例输出 (data.csv):

name,age,city
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago

  • 20
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旦莫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值