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


目录
相关文章
|
2月前
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
2月前
|
JSON API 数据格式
Python采集京东商品评论API接口示例,json数据返回
下面是一个使用Python采集京东商品评论的完整示例,包括API请求、JSON数据解析
|
11天前
|
JSON 安全 API
Python处理JSON数据的最佳实践:从基础到进阶的实用指南
JSON作为数据交换通用格式,广泛应用于Web开发与API交互。本文详解Python处理JSON的10个关键实践,涵盖序列化、复杂结构处理、性能优化与安全编程,助开发者高效应对各类JSON数据挑战。
68 1
|
1月前
|
数据采集 存储 Web App开发
Python爬虫库性能与选型实战指南:从需求到落地的全链路解析
本文深入解析Python爬虫库的性能与选型策略,涵盖需求分析、技术评估与实战案例,助你构建高效稳定的数据采集系统。
179 0
|
2月前
|
XML Linux 区块链
Python提取Word表格数据教程(含.doc/.docx)
本文介绍了使用LibreOffice和python-docx库处理DOC文档表格的方法。首先需安装LibreOffice进行DOC到DOCX的格式转换,然后通过python-docx读取和修改表格数据。文中提供了详细的代码示例,包括格式转换函数、表格读取函数以及修改保存功能。该方法适用于Windows和Linux系统,解决了老旧DOC格式文档的处理难题,为需要处理历史文档的用户提供了实用解决方案。
115 1
|
30天前
|
数据采集 索引 Python
Python Slice函数使用教程 - 详解与示例 | Python切片操作指南
Python中的`slice()`函数用于创建切片对象,以便对序列(如列表、字符串、元组)进行高效切片操作。它支持指定起始索引、结束索引和步长,提升代码可读性和灵活性。
|
2月前
|
存储 监控 安全
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍如何利用Python的clipboard-monitor库实现剪贴板监控系统,涵盖文本与图片的实时监听、防重复存储、GUI界面开发及数据加密等核心技术,适用于安全审计与自动化办公场景。
68 0
|
9天前
|
JSON API 数据安全/隐私保护
深度分析淘宝卖家订单详情API接口,用json返回数据
淘宝卖家订单详情API(taobao.trade.fullinfo.get)是淘宝开放平台提供的重要接口,用于获取单个订单的完整信息,包括订单状态、买家信息、商品明细、支付与物流信息等,支撑订单管理、ERP对接及售后处理。需通过appkey、appsecret和session认证,并遵守调用频率与数据权限限制。本文详解其使用方法并附Python调用示例。

推荐镜像

更多