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生成的是字节的形式。