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

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

 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)

image.gif

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

4. JSON解码(反序列化)


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

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

image.gif

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

5. 文件操作


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

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

image.gif

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

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

image.gif

6. 错误处理


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

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

image.gif

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)

image.gif

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

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

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

image.gif

这里,名为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)

image.gif

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

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

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

image.gif

这里,名为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}")

image.gif

解释代码:

  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"}
]

image.gif

示例输出 (data.csv):

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

image.gif


目录
相关文章
|
3天前
|
监控 搜索推荐 UED
用Python的pynput库追踪每一次点击和滚动
使用Python的`pynput`库可监听鼠标活动,包括点击和滚动事件。安装`pynput`后,通过`mouse.Listener`捕获鼠标事件。示例代码展示如何记录点击位置、滚动方向,并创建日志文件。通过类封装,可控制记录器的启停,并实现特定模式下的响应,如快速三连击左键自动打开网站。动手实践,将理论转化为实用工具。
|
1天前
|
数据采集 存储 数据处理
使用Python获取1688商品详情的教程
使用Python爬取1688商品详情,涉及requests库抓取页面、BeautifulSoup解析HTML,安装必要库如requests、beautifulsoup4、pandas和lxml。通过get_page发送请求,BeautifulSoup解析提取如标题、价格等信息。数据处理后可使用pandas保存至CSV。注意遵守法律法规和网站政策,避免频繁请求。[代码片段及更多详情见链接
|
3天前
|
XML 数据格式 Python
Python模块导入包括:`import math`导入标准库
【6月更文挑战第23天】Python模块导入包括:`import math`导入标准库,`from math import sqrt`导入单个函数,`import numpy as np`给模块取别名,`from random import *`导入所有(不推荐),`import xml.etree.ElementTree as ET`导入子模块,`import_module('pandas')`按需导入,和使用相对路径如`from .module import func`处理项目结构。记得调整`sys.path`以包含自定义模块路径。
15 4
|
4天前
|
数据采集 机器学习/深度学习 数据可视化
利用Python和Pandas库构建高效的数据分析流程
在数据驱动的时代,数据分析已成为企业决策的关键环节。本文介绍如何利用Python编程语言及其强大的数据分析库Pandas,构建一套高效且可扩展的数据分析流程。与常规的数据分析流程不同,本文不仅涵盖数据加载、清洗、转换等基础步骤,还强调数据可视化、模型探索与评估等高级分析技巧,并通过实际案例展示如何在Python中实现这些步骤,为数据分析师提供一套完整的数据分析解决方案。
|
1天前
|
前端开发 JavaScript PHP
顶级Python库(附代码)大分享
顶级Python库(附代码)大分享
|
1天前
|
Python
python之数值计算、math库、随机数
python之数值计算、math库、随机数
6 0
|
2天前
|
机器学习/深度学习 自然语言处理 TensorFlow
使用Python实现深度学习模型:BERT模型教程
使用Python实现深度学习模型:BERT模型教程
46 0
|
2天前
|
Python
Python yield与实现教程分享
Python yield与实现教程分享
|
2天前
|
Python
Python深入学习教程
Python深入学习教程
|
2天前
|
存储 机器学习/深度学习 算法
Python算法基础教程
Python算法基础教程