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’--

猜你喜欢

转载自blog.csdn.net/xiaogeldx/article/details/84274498