Json模块:可以进行任意语言之间的数据转换
一.与之前的eval()对比
dic={"name":"alex"} f=open("hello","w",encoding="utf-8") #新建一个文件 #此时想往f里存入dic得转换成字符串的格式 f.write(str(dic)) #之后在想打开这个文件用里面的东西 f_read=open('hello',"r",encoding="utf-8") data=f_read.read() #读取文件中的数据 print(type(data)) #输出的是字符串的形式,而不是字典的形式 #所以,应该转换数据类型 data=eval(data) print(data["name"])
但是eval对于很多数据类型都处理不了,比如函数、类
二.json的使用:将python的数据类型转换成通用的json数据类型
(1)
import json dic={"name":"alex"} data=json.dumps(dic) #将字符串的单引号全部变成双引号,再变成一个字符串 print(type(data)) #输出结果为<class 'str'>,这是一个json字符串
i=8
i=json.dumps(i)
print(i) #输出的也是8,但其本质也是一个json字符串
无论什么数据类型 经过json.dumps()都会形成一个json字符串
import json dic={"name":"alex"} dic_str=json.dumps(dic) print(type(dic_str)) f=open("hello","w") f.write(dic_str) #这样就可以将字典形式的东西先转换成json字符串,然后再写入文件中
如果想把写入文件的东西read出来,可以用这种方法
import json dic={"name":"alex"} dic_str=json.dumps(dic) print(type(dic_str)) # f=open("hello","w") # f.write(dic_str) #这样就可以将字典形式的东西先转换成json字符串,然后再写入文件中 f_read=open("hello","r") data=json.loads(f_read.read()) print(data) #得到的就是一个字典形式
只要字符串满足json规则(双引号),就可以直接拿出来loads使用。
PICKLE模块(和json使用起来类似,只有dumps和loads两种功能,不太重要)
区别:json生成的是json字符串格式,而pickle生成的是字节的形式。