JSON类型解析

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)转化为字典,获取参数信息

猜你喜欢

转载自www.cnblogs.com/testerlina/p/12819612.html