Python的json,base64模組
阿新 • • 發佈:2018-12-31
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’--’