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


目录
相关文章
|
11天前
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
1月前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
73 20
|
4天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
29 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
28天前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
106 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
22天前
|
IDE 测试技术 项目管理
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
PyCharm是由JetBrains开发的Python集成开发环境(IDE),专为Python开发者设计,支持Web开发、调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试和版本控制等功能。它有专业版、教育版和社区版三个版本,其中社区版免费且适合个人和小型团队使用,包含基本的Python开发功能。安装PyCharm前需先安装Python解释器,并配置环境变量。通过简单的步骤即可在PyCharm中创建并运行Python项目,如输出“Hello World”。
197 13
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
|
2月前
|
XML JSON 数据库
Python的标准库
Python的标准库
185 77
|
2月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
87 8
|
2月前
|
XML JSON 数据库
Python的标准库
Python的标准库
71 11
|
2月前
Seaborn 教程-主题(Theme)
Seaborn 教程-主题(Theme)
155 7
|
2月前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
57 4

热门文章

最新文章

推荐镜像

更多