9.6 JSON 基本操作


文章目录

  • 前言
  • [一、JSON与Python json模块简介](#一、JSON与Python json模块简介)
  • 二、json模块常用方法
    • [2.1 dumps:将 Python 对象转为 JSON 字符串](#2.1 dumps:将 Python 对象转为 JSON 字符串)
    • [2.2 dump:将 Python 对象直接写入文件](#2.2 dump:将 Python 对象直接写入文件)
    • [2.3 loads:将 JSON 字符串转为 Python 对象](#2.3 loads:将 JSON 字符串转为 Python 对象)
    • [2.4 load:从文件类对象直接读取并转换](#2.4 load:从文件类对象直接读取并转换)

前言

本文主要介绍Python json模块简介及常用方法。


一、JSON与Python json模块简介

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,结构清晰、易于阅读和编写,能够有效提升网络传输效率。Python 内置的 json 模块提供了一系列方法,用于处理 JSON 格式数据的编码与解码。

二、json模块常用方法

json 模块主要包含 dump、dumps、load、loads 四种核心方法,用于实现 JSON 数据与 Python 对象之间的相互转换。

2.1 dumps:将 Python 对象转为 JSON 字符串

dumps() 方法可将 Python 对象转换为 JSON 格式字符串。例如,将字典转换为 JSON 字符串:

python 复制代码
python
import json

data = {'id': '001', 'name': '张三', 'age': '20'}
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)

输出结果:

bash 复制代码
text
{"id": "001", "name": "张三", "age": "20"}

若需格式化输出,可添加参数控制格式:

python 复制代码
python
json_str = json.dumps(
    data, 
    ensure_ascii=False, 
    sort_keys=True, 
    indent=4, 
    separators=(',', ': ')
)

输出结果:

bash 复制代码
json
{
    "age": "20",
    "id": "001",
    "name": "张三"
}

Python 对象与 JSON 类型对应关系

Python JSON
dict object
list, tuple array
str string
int, float, 枚举类 number
True true
False false
None null

将 JSON 字符串写入文件

python 复制代码
python
with open('test.json', 'w', encoding='utf-8') as f:
    f.write(json_str)

2.2 dump:将 Python 对象直接写入文件

dump() 方法可将 Python 对象序列化为 JSON 格式并直接写入文件类对象:

python 复制代码
python
with open('test.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, indent=4, ensure_ascii=False)

该方法适用于直接将数据保存为 JSON 文件的场景。若需将数据转换为字符串(如存入数据库),则应使用 dumps()。

2.3 loads:将 JSON 字符串转为 Python 对象

loads() 方法用于将 JSON 格式字符串转换为 Python 对象:

python 复制代码
python
json_str = '{"id": "001", "name": "张三", "age": "20"}'
data_dict = json.loads(json_str)
print(data_dict)

输出结果:

bash 复制代码
text
{'id': '001', 'name': '张三', 'age': '20'}

JSON 类型与 Python 对象对应关系

JSON Python
object dict
array list
string str
number(int) int
number (real) float
true True
false False
null None

读取 JSON 文件并转换为 Python 对象

python 复制代码
python
with open('test.json', encoding='utf-8') as f:
    data = f.read()
    print(json.loads(data))

2.4 load:从文件类对象直接读取并转换

load() 方法可直接从文件类对象中读取数据并转换为 Python 对象:

python 复制代码
python
with open('test.json', encoding='utf-8') as f:
    data_dict = json.load(f)
    print(data_dict)

该方法与 loads() 的区别在于:load() 接收文件对象作为参数,而 loads() 接收字符串参数。


相关推荐
2301_790300963 分钟前
Python深度学习入门:TensorFlow 2.0/Keras实战
jvm·数据库·python
程序员敲代码吗1 小时前
用Python生成艺术:分形与算法绘图
jvm·数据库·python
Yyyyy123jsjs1 小时前
如何通过免费的外汇API轻松获取实时汇率数据
开发语言·python
喵手2 小时前
Python爬虫实战:GovDataMiner —— 开放数据门户数据集元数据采集器(附 CSV 导出)!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·open data·开放数据门户数据集列表
历程里程碑2 小时前
滑动窗口---- 无重复字符的最长子串
java·数据结构·c++·python·算法·leetcode·django
人工智能AI技术2 小时前
【Agent从入门到实践】43 接口封装:将Agent封装为API服务,供其他系统调用
人工智能·python
Darkershadow3 小时前
蓝牙学习之Time Set
python·学习·蓝牙·ble·mesh
m0_736919104 小时前
超越Python:下一步该学什么编程语言?
jvm·数据库·python
学习中的DGR4 小时前
[极客大挑战 2019]Http 1 新手解题过程
网络·python·网络协议·安全·http