1. 程式人生 > >Python的json,base64模組

Python的json,base64模組

JSON

json基本結構

- JSON(JavaScript Object Notation)是一種輕量級的資料交換格式,是文字資料
- 前後端互動最適合之一
- Python中利用json模組來轉換資料型別和json字串
- json資料就是字串
-json語法規範:
	- 資料由鍵值對組成,鍵值對由逗號分隔,大括號儲存物件(dict),中括號儲存陣列(列表,元組),字串必須用雙引號
- 字尾為 .json
如student.json
{
"name":"xiaoming","age":16,"feature":["聰明","幽默"]		#此處字串一定用雙引號
}

Python物件(obj)和json物件對應關係

Python							json
字典								物件
列表/元組						陣列
字串							字串
int/float						數字
True/False					true/false
None							null

Python和json轉化方法

- 四種方法:dumps,dump,loads,load

dumps

- 把Python物件轉換成json資料(字串)
案例:
import json
student = {"name":"xiaohong","age":17,"feature":["美麗","善良"]}
json_str = json.dumps(student,ensure_ascii=False)
#dumps(此處為字串)
```
此處的ensure-ascii=false 可加可不加,如果不加,Python中的漢字則為Unicode編碼,如\u5584\u826f,加則可轉化成漢字
```
print(json_str)
print(type(json_str))

dump

- 把Python物件轉換成json檔案
案例:
import json
student = {"name":"xiaohong","age":17,"feature":["美麗","善良"]}
with open("test.json","w",encoding="utf-8") as f:
    json.dump(student,f)

loads

- 把json字串轉換成Python物件
案例:
import json
json_str = '{"name":"xiaona","age":17,"feature":["美麗","善良"]}'
obj = json.loads(json_str)	#loads(此處為字串)
print(obj)
print(type(obj))

load

- 把json檔案轉換成Python物件
案例:
import json
with open("test.json","r",encoding="utf-8") as f:
    obj = json.load(f)		#load(此處為檔案)
print(obj)
print(type(obj))

base64

- 用文字(ASCII字元)表示二進位制數
- 64個字母來表示A-Z,     a-z,      0-9,   +,/
			      0-25     26-51     52-61   62   63
- 每三個位元組換成四個base64
b“abc”:b"YWJj"
01100001 01100010 01100011(3*8)
011000 010110 001001 100011	(4*6)
24		22		9	    35
Y		W		J		j
import base64
info = b'abc'
res = base64.b64encode(info)	#編碼接收的是位元組資料,返回的也是位元組資料
print(res)		#b'YWJj'
res = base64.b64decode(res)	
print(res)		# b'abc'
#解碼接收的是位元組資料,返回的也是位元組資料
雖然64個ASCII可以自定義,但不是加密演算法
- 如果原文字位元組數不是3的倍數,編碼後用=補齊

在這裡插入圖片描述
import base64
url = b"abc3"
res = base64.b64encode(url) #b’YWJjMw==’
print(res)
- base64編碼後,+,/,在URL中,不可以,如果要對URL進行編碼,專門的安全的URL編碼,本質上,是將+和/用-和_取代,base64.urlsafe_b64encode
url = b"\xfb\xff\xbf"
print(base64.b64encode(url)) #b’+/+/’
print(base64.urlsafe_b64encode(url)) #b’--