其他分享
首页 > 其他分享> > json模块

json模块

作者:互联网

"""
序列化模块:
1.json格式语言是不同语言之间交换的桥梁
工作中会经常出现不同语言之间的数据交互
python语言 <===> json格式语言 <===> javascript语言
2.json格式数据的具体特征
数据基于网络传输是二进制形式
只有字符串类型可以调用encode方法,转化为bytes类型数据
基于上述原因:json格式数据,属于字符串类型(几乎所有编程语言都具有字符串类型)
通过json模块,把其它数据类型全部转成字符串类型,可以实现二进制网络传输
"""
import json

# d = {'username': 'json', 'pwd': 123}
# print(d, type(d)) # 字典类型
# res = json.dumps(d)
# print(res, type(res)) # 字符串类型
# print(str(d), type(str(d))) # 字符串类型,两者之间存在差别
"""双引号是json格式数据的标志性符号"""
# d = {"username": "json", "pwd": 123}
# print(d) # 键仍然是单引号字符串,不是json格式
#
# res1 = '{"username": "json", "pwd": 123}'
# print(res1) #变成了json格式
"""
json格式的判别方法:是否是字符串?是否是双引号?两点缺一不可
"""

# d = {'username': 'json', 'pwd': 123}
# res = json.dumps(d)
# # print(res, type(res)) # 转成json类型字符串
# encode_str = res.encode('utf-8')
# """假设将该字符串基于网络传给了另一个python程序"""
# json_str = encode_str.decode('utf-8')
# res1 = json.loads(json_str)
# print(res1, type(res1))
"""
json提供了把python数据类型全部变成字符串,并且还可以变回原数据的能力
json.dumps() 序列化:将python其它数据类型转换成json格式字符串

json.loads() 反序列化:将json格式字符串转换成对应的数据类型
"""

d = {'username': 'json', 'pwd': 123}
with open(r'a.txt', 'w', encoding='utf-8') as f:
f.write(json.dumps(d)) # write只能write字符串
# str(d)产生的是单引号的字符串
with open(r'a.txt', 'r', encoding='utf-8') as f:
data = f.read()
print(data)
res1 = json.loads(data)
print(res1, type(res1))

"""
如果json模块需要配合文件一起使用
json.dump(data, filename) 自动将其它数据类型转化为json格式字符串并写入文件
相当于 f.write(json.dumps(d))
json.load(filename) 自动将json格式字符串取出并转化为原数据类型
相当于 data = f.read() res1 = json.loads(data)
"""

"""
ps:不是所有的数据类型都支持序列化
json.JSONEncoder
+-------------------+---------------+
| Python | JSON |
+===================+===============+
| dict | object |
+-------------------+---------------+
| list, tuple | array |
+-------------------+---------------+
| str | string |
+-------------------+---------------+
| int, float | number |
+-------------------+---------------+
| True | true |
+-------------------+---------------+
| False | false |
+-------------------+---------------+
| None | null |
+-------------------+---------------+
集合类型不支持
bytes类型直接传
"""

标签:+-------------------+---------------+,res1,print,json,模块,字符串,格式
来源: https://www.cnblogs.com/liuzexi/p/16480971.html