Python中實現(xiàn)JSON數(shù)據(jù)讀寫的編程實戰(zhàn)指南
在現(xiàn)代編程中 數(shù)據(jù)交換是不可或缺的一部分,無論是 Web 開發(fā)、接口通信、還是配置文件存儲 JSON 格式都是應(yīng)用最廣泛的數(shù)據(jù)格式之一,Python 對 JSON 的支持非常完善,通過內(nèi)置模塊 json 就能輕松實現(xiàn)數(shù)據(jù)的序列化與反序列化。
本文將帶你深入理解 JSON 的概念以及在 Python 中的讀寫操作方法
一 什么是 JSON
JSON 全稱是 JavaScript Object Notation,即 JavaScript 對象表示法,它是一種輕量級的數(shù)據(jù)交換格式,具有以下特點
- 使用鍵值對存儲數(shù)據(jù) 類似于 Python 的字典
- 結(jié)構(gòu)清晰 可嵌套
- 支持多種基本數(shù)據(jù)類型
- 語言無關(guān) 可跨平臺
一個典型的 JSON 示例
{
"name": "Alice",
"age": 25,
"is_student": false,
"skills": ["Python", "Java", "SQL"]
}
在 Python 中 這種結(jié)構(gòu)與字典類型非常相似 因此二者可以輕松互轉(zhuǎn)
二 JSON 與 Python 數(shù)據(jù)類型對應(yīng)關(guān)系
| JSON 類型 | Python 類型 |
|---|---|
| object | dict |
| array | list |
| string | str |
| number | int 或 float |
| true | True |
| false | False |
| null | None |
這種對應(yīng)關(guān)系讓 JSON 數(shù)據(jù)與 Python 數(shù)據(jù)結(jié)構(gòu)之間的轉(zhuǎn)換非常自然
三 Python JSON 模塊常用方法
Python 內(nèi)置的 json 模塊提供了四個核心方法
| 方法 | 作用 |
|---|---|
| json.dumps() | 將 Python 對象轉(zhuǎn)換為 JSON 字符串 |
| json.loads() | 將 JSON 字符串解析為 Python 對象 |
| json.dump() | 將 Python 對象寫入 JSON 文件 |
| json.load() | 從 JSON 文件讀取并轉(zhuǎn)換為 Python 對象 |
四 Python 對象轉(zhuǎn) JSON 字符串
import json
data = {
"name": "Alice",
"age": 25,
"skills": ["Python", "Data Analysis"]
}
json_str = json.dumps(data, ensure_ascii=False, indent=4)
print(json_str)
輸出結(jié)果
{
"name": "Alice",
"age": 25,
"skills": [
"Python",
"Data Analysis"
]
}
參數(shù)說明
ensure_ascii=False:防止中文被轉(zhuǎn)義indent=4:設(shè)置縮進(jìn)格式 讓輸出更易讀
五 JSON 字符串轉(zhuǎn) Python 對象
import json
json_str = '{"name": "Alice", "age": 25, "skills": ["Python", "Data Analysis"]}'
data = json.loads(json_str)
print(data["name"])
輸出
Alice
六 寫入 JSON 文件
將數(shù)據(jù)保存到文件非常常見 例如保存配置或用戶信息
import json
user = {
"id": 1001,
"name": "Bob",
"vip": True,
"balance": 99.8
}
with open("user.json", "w", encoding="utf-8") as f:
json.dump(user, f, ensure_ascii=False, indent=4)
print("JSON 文件寫入完成")
執(zhí)行后 你將在當(dāng)前目錄生成一個名為 user.json 的文件
七 從文件中讀取 JSON 數(shù)據(jù)
import json
with open("user.json", "r", encoding="utf-8") as f:
user_info = json.load(f)
print(user_info)
print(type(user_info))
輸出
{'id': 1001, 'name': 'Bob', 'vip': True, 'balance': 99.8}
<class 'dict'>
說明從文件中讀取的 JSON 已成功轉(zhuǎn)換為 Python 字典對象
八 實戰(zhàn) 案例 讀取配置文件并修改
假設(shè)我們有一個配置文件 config.json
{
"version": "1.0",
"debug": true,
"users": ["admin", "guest"]
}
我們想讀取其中內(nèi)容 并更新某些字段
import json
# 讀取配置
with open("config.json", "r", encoding="utf-8") as f:
config = json.load(f)
# 修改參數(shù)
config["debug"] = False
config["users"].append("developer")
# 保存回文件
with open("config.json", "w", encoding="utf-8") as f:
json.dump(config, f, ensure_ascii=False, indent=4)
print("配置文件已更新")
九 異常處理與健壯性
在處理 JSON 文件時 可能會遇到文件缺失或格式錯誤 可以使用 try...except 捕獲異常
import json
try:
with open("data.json", "r", encoding="utf-8") as f:
data = json.load(f)
except FileNotFoundError:
print("文件未找到")
except json.JSONDecodeError:
print("JSON 格式錯誤")
else:
print("讀取成功")
十 小結(jié)
JSON 是 Python 與外部世界交互的橋梁 無論是 API 通信 還是數(shù)據(jù)存儲 JSON 都是最常見也最重要的數(shù)據(jù)格式之一
學(xué)習(xí)要點
- 使用
json.dumps()與json.loads()實現(xiàn)內(nèi)存中數(shù)據(jù)的轉(zhuǎn)換 - 使用
json.dump()與json.load()操作文件 - 養(yǎng)成使用
with open()的好習(xí)慣 - 處理異常 提高代碼健壯性
掌握 JSON 數(shù)據(jù)讀寫后 你已經(jīng)具備處理各種接口數(shù)據(jù)與配置文件的能力 這將在實際項目中為你帶來巨大的便利
到此這篇關(guān)于Python中實現(xiàn)JSON數(shù)據(jù)讀寫的編程實戰(zhàn)指南的文章就介紹到這了,更多相關(guān)Python JSON數(shù)據(jù)讀寫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用tensorflow DataSet實現(xiàn)高效加載變長文本輸入
今天小編就為大家分享一篇使用tensorflow DataSet實現(xiàn)高效加載變長文本輸入,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
python自帶緩存lru_cache用法及擴(kuò)展的使用
本篇博客將結(jié)合python官方文檔和源碼詳細(xì)講述lru_cache緩存方法是怎么實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08
python 模擬創(chuàng)建seafile 目錄操作示例
這篇文章主要介紹了python 模擬創(chuàng)建seafile 目錄操作,結(jié)合實例形式詳細(xì)分析了Python模擬創(chuàng)建seafile 目錄相關(guān)操作技巧,需要的朋友可以參考下2019-09-09
Python利用SSH隧道實現(xiàn)數(shù)據(jù)庫訪問
這篇文章主要為大家詳細(xì)介紹了如何通過sshtunnel類庫建立SSH隧道,再使用paramiko通過SSH來訪問數(shù)據(jù)庫,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03
Python3 SSH遠(yuǎn)程連接服務(wù)器的方法示例
這篇文章主要介紹了Python3 SSH遠(yuǎn)程連接服務(wù)器的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12
Python集成OpenClaw實現(xiàn)自動化腳本開發(fā)實戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了如何將OpenClaw與Python集成開發(fā)自動化辦公腳本,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2026-04-04
Python提取Word文檔中各種數(shù)據(jù)的詳細(xì)方法(基于python-docx庫)
在當(dāng)今的數(shù)字化工作環(huán)境中,處理大量文檔和數(shù)據(jù)已經(jīng)成為日常工作的一部分,這篇文章主要介紹了Python提取Word文檔中各種數(shù)據(jù)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-04-04

