python與json數(shù)據的交互詳情
一 什么是json
json是一種獨立于編程語言和平臺的輕量級數(shù)據交換方式。和xml一樣,只是一種數(shù)據交換方式,與編程語言沒有依賴關系。各種支持json數(shù)據格式的編程語言,都會有對其進行解析的方法。xml和json都用于數(shù)據存儲和數(shù)據交換,但是現(xiàn)在json越來越流行,用的比xml多。json較xml的優(yōu)點如下
- xml需要用xml解析器來進行,而json則不用(主要區(qū)別)。
- json不需要寫標簽,較簡短。
- json的讀寫速度更快
二 json語法格式
{
"name": "安先生",
"age": "24"
}如上,json數(shù)據是以key:value 的形式保存在一對大括號{}中的,多個數(shù)據用逗號分隔,和python中的字典非常相像,但是json數(shù)據中的key和value全都是用雙引號包起來的。
三 python與json的交互
python中提供了四種與json數(shù)據打交道的方法,即json.loads(),json.load(),json.dumps()和json.dump(),下面一一進行介紹。
1. json.loads()
json.loads(): 將json對象轉換為python對象,一般是將字符串轉為python的字典dict。
import json
json_data = '{"name": "安先生", "age": "24"}'
print(type(json_data))
print(json_data)
#json.loads()將json對象轉為python對象
py_data = json.loads(json_data)
print(type(py_data))
print(py_data)輸出:
>>>
<class 'str'>
{"name": "安先生", "age": "24"}
<class 'dict'>
{'name': '安先生', 'age': '24'}
2. json.load()
json.load(): 讀取json文件(解碼)
import json
json_data = open('../練習文件/json.json', 'r', encoding='utf-8')
print(type(json_data))
data = json.load(json_data)
print(type(data))
print(data)>>>
<class '_io.TextIOWrapper'>
<class 'dict'>
{'name': '安先生', 'age': '24', 'job': '軟件測試'}
3. json.dumps()
json.dumps(): 將python對象轉為json對象
import json
py_data = {"name": "張三", "age": 24, "job": "法外狂徒"}
print(type(py_data))
print(py_data)
#indent控制縮進,ensure_ascii控制編碼
json_data = json.dumps(py_data, indent=4, ensure_ascii=False)
print(type(json_data))
print(json_data)其中indent參數(shù)是控制縮進的,ensure_ascii改變默認編碼(Unicode)
<class 'dict'>
{'name': '張三', 'age': 24, 'job': '法外狂徒'}
<class 'str'>
{
"name": "張三",
"age": 24,
"job": "法外狂徒"
}4. json.dump()
json.dump(): 向json文件寫數(shù)據(編碼)
import json
py_data = {"name": "張三", "age": 24, "job": "法外狂徒"}
#先用json.dumps()將python對象轉為json對象
json_data = json.dumps(py_data)
with open('../練習文件/json.json', 'w', encoding='utf-8') as f:
json.dump(json_data, f)
#讀取數(shù)據
msg = open('../練習文件/json.json', 'r')
msg = json.load(msg)
print(msg)寫入的json文件數(shù)據:


可以看到,讀寫的數(shù)據和我們想要的不一致,這是因為json.dump()默認寫的是Unicode編碼的數(shù)據,中文是不在Unicode編碼中的,所以顯示的時候就不會以中形式顯示,不過可以用json.dump()的ensure_ascii參數(shù)來控制,將其設置為False,
如下:
import json
py_data = {"name": "張三", "age": "24", "job": "法外狂徒"}
#轉換成json對象時,編碼默認為Unicode,ensure_ascii=False 取消默認編碼
with open('../練習文件/json.json', 'w', encoding='utf-8') as f:
json.dump(py_data, f, indent=4, ensure_ascii=False,)
#讀取數(shù)據
msg = open('../練習文件/json.json', 'r', encoding='utf-8')
msg = json.load(msg)
print(msg)結果如下:

>>>
{'name': '張三', 'age': '24', 'job': '法外狂徒'}到此這篇關于python與json數(shù)據的交互詳情的文章就介紹到這了,更多相關python json數(shù)據交互內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Python中高效的json對比庫deepdiff詳解
- python處理json文件的四個常用函數(shù)
- 使用python如何提取JSON數(shù)據指定內容
- python如何讀取和存儲dict()與.json格式文件
- 利用python實現(xiàn)JSON文檔與Python對象互相轉換
- python+html實現(xiàn)前后端數(shù)據交互界面顯示的全過程
- python tkinter與Mysql數(shù)據庫交互實現(xiàn)賬號登陸
- Python與數(shù)據庫的交互問題小結
- python實現(xiàn)與Oracle數(shù)據庫交互操作示例
- python 如何用urllib與服務端交互(發(fā)送和接收數(shù)據)
- python GUI庫圖形界面開發(fā)之PyQt5中QWebEngineView內嵌網頁與Python的數(shù)據交互傳參詳細方法實例
相關文章
Python批量實現(xiàn)Word/EXCEL/PPT轉PDF
在日常辦公和文檔處理中,有時我們需要將多個Word文檔、Excel表格或PPT演示文稿轉換為PDF文件,本文將介紹如何使用Python編程語言批量實現(xiàn)將多個Word、Excel和PPT文件轉換為PDF文件,需要的可以參考下2023-09-09
Python虛擬環(huán)境Virtualenv使用教程
這篇文章主要介紹了Python虛擬環(huán)境Virtualenv簡明教程,本文整合了兩篇關于Virtualenv的使用教程,相信大家有通過本文一定可以學會如何使用Virtualenv,需要的朋友可以參考下2015-05-05

