日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中json模块博客园_Python中的Json模块详解

發布時間:2025/3/21 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中json模块博客园_Python中的Json模块详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python中的Json模塊詳解

Json(JavaScript Object Notation)它是一種輕量級的數據交換格式,具有數據格式簡單,讀寫方便易懂等很多優點。許多主流的編程語言都在用它來進行前后端的數據傳輸,大大的簡化了服務器和客戶端的開發工作量。相對于XML來說,更加的輕量級,更方便解析,因此許多開發者都遵循Json格式來進行數據的傳輸和交換。今天我們詳細介紹一下Python在Json的編解碼方面的知識。

json的數據格式

在json中,遵循“鍵值對”的這樣一種方式,比如:“{"name":"tom"}”,就是一個json格式的數據,json的格式歸納下來,一般有以下幾點:

對象通過鍵值對表現;

鍵通過雙引號包裹,后面跟冒號“:”,然后跟該鍵的值;

值可以是字符串、數字、數組等數據類型;

對象與對象之間用逗號隔開;

“{}”用來表達對象;

“[]”用來表達數組;

看一個例子:

{

"name":"中國",

"province":[{

"name":"廣東",

"cities":{

?

"city":["揭陽","惠來"]

?

}

}]

}

上例則是一個典型的json格式的數據,強大的Python提供了一個“json”模塊,可以方便的將各種零散的數據通過模塊的內置函數編碼形成一個json格式的數據,也可以將一個json格式的數據解碼形成自己需要的數據,非常好用,下面我們就來介紹一下

json.dumps()

json模塊里的dumps函數是對數據進行編碼,形成json格式的數據,我們看一下下面的例子:

import json

?

?

data_dict = {"key1": "value1", "key2": "value2", "key3": "value3"}

# 有序轉換json字符串

json1 = json.dumps(data_dict, sort_keys=True)

# 默認無序

json2 = json.dumps(data_dict)

print(json1)

print(json2)

通過輸出的結果很容易看出,通過dumps方法使字典轉換成為了json格式,雖然它們非常相似。其中,在dumps里的參數“sort_keys=True”,使得輸出json后對key和value進行0~9、a~z的順序排序,如果不填,則按照無序排列。有時候,通過排序可以方便地比較json中的數據,因此,適當的排序是很有必要的。

此外,“Indent”參數表示縮進的意思,它可以使得輸出的Json看起來更加整齊好看,可讀性更強,例如:

import json

?

?

data_dict = {"key1": "value1", "key2": "value2", "key3": "value3"}

# 默認無序

json1 = json.dumps(data_dict, indent=4)

print(json1)

?

'''輸出結果

{

"key1": "value1",

"key2": "value2",

"key3": "value3"

}

'''

列舉一下dumps()的可填參數:

skipkey:默認為False,當dict對象里的數據不是Python的基本數據類型;(str,unicode,int,long,float,bool,None)時,當skipkey為False,就會報錯,如果skipkey為True,則可以跳過這類key;

indent:如果填0或者不填,則按照一行進行打印,否則按照indent的數值顯示前面的空格(正整數形式);

separators:分隔符,默認為“(',',':')”,它表示key之間用“,”隔開,key和value之間用“:”隔開;

encoding:編碼格式,默認值是UTF-8;

sort_keys:對key、value進行排序,默認值是False,即不排序;

ensure_ascii:默認為True,如果dict對象里含有none-ASCII的字符,則顯示\uXX的格式,如果為False,則能正常顯示出來;

json.loads()

和dumps相反,loads函數則是將json格式的數據解碼,轉換為Python字典,我們看一下下面的例子:

import json

?

?

data_str = '{"key1": "value1", "key2": "value2", "key3": "value3"}'

# 默認無序

data_dict = json.loads(data_str)

print(data_dict)

?

"""

{'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}

?

"""

有時候,輸出結果遇到中文的時候,會出現編碼格式不一樣的情況,顯示出為Unicode的編碼格式,使得不易讀懂,解決辦法是添加參數“encoding”參數,即上面的改寫成這樣:d1 = json.loads(data1,encoding='utf-8')即可。

json.dump()和 json.load()

相對于上面所講的dumps和loads來說,dump和load函數的功能類似,只不過前者是用來處理字符串類型的,而后者是用于處理文件類型的,如下所示:

import json

data = {'str3':'xyz','str2' :'efgh','str1':'abcd'}

with open(' data. txt', '', encoding='utf-8') as f:

json.dump(data, f, indent=4) # f. write (json.dumps (data, indent=4)) #和上面的效果一樣

with open(' data. txt', 'r') as f:

d2 = json.load(f) #d2 = json.loads (f. read())#和上面的效果一樣

總結

以上是生活随笔為你收集整理的python中json模块博客园_Python中的Json模块详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。