JSON类型解析
一、序列化和反序列化
程序中的对象,如python中的字典、列表、函数、类等,都是存在内存中,不方便传递或存储,所以需要将内存中的对象转化为文本或者文件格式,来满足传输和持久化(存储)
序列化:内存对象-->文本
反序列化:文本-->内存对象
JSON对象(Python字典)-->转为文本格式-->发送文本格式的请求
->服务器收到请求-将文本格式转化为对象,获取其中的参数,处理业务
-->返回文本格式的响应-->客户端将文本格式转为对象格式,来获取响应的数据
二、Python字典格式和json格式的区别
Python字典格式和json格式的区别:
1、字典中的引号支持单引号和双引号,json格式只支持双引号
2、字典中的True/False首字母大写,json格式为true/false
3、字典中的空值为None,json格式为null
三、json格式的操作方法
1、文本的序列化
序列化(字典-->文本):json.dumps()
反序列化(文本-->字典):json.loads()
文本序列化例如:
#coding=utf-8
import json
obj = {"name": "你好", "password": "123456", "male": True, "money": None}
json_info=json.dumps(obj)
print(json_info)
json_info=json.dumps(obj,ensure_ascii=False) #ensure_ascii=False不确保ascii码,如果返回格式为utf-8,不转化为\u...
print(json_info)
结果:
{"money": null, "password": "123456", "male": true, "name": "\u4f60\u597d"}
{"money": null, "password": "123456", "male": true, "name": "你好"}
2、文件的序列化
序列化(字典-->文件句柄):json.dump()
反序列化(文件句柄-->字典):json.load()
文件序列化:
# coding=utf-8
import json
res_dict = {'name': '张三', 'password': '123456', "male": True, "money": None}
f = open("demo1.json","w")
json.dump(res_dict, f,ensure_ascii=False)
结果demo1.json内容为:
{"money": null, "password": "123456", "male": true, "name": "张三"}
文件反序列化:
# coding=utf-8
import json
f = open("demo2.json","r")
f_dict = json.load(f) # 反序列化将文件句柄转化为字典
print(f_dict ['name']) # 读取其中参数
f.close()
四、字典和json文本的使用
在组装数据时,一般使用字典格式,发送请求时用json.dumps()将字典转化为文本发送请求,收到请求后使用json.loads(res.text)转化为字典,获取参数信息