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