python3數據序列化工具json
data = {"Name":"XiaoMing","Age":22}
f = open("test.txt","r+",encoding="utf-8")
f.write(str(data)) //把data轉換成字符串類型
f.close()
如果現在讀取數據的話,字符串肯定不能使用data["Name"]這樣的形式來調取值,所以還需要把字符串轉換成字典格式
f = open("test.txt","r+",encoding="utf-8")
data = eval(f.read()) //小技巧,使用eval可以把字符串轉換為字典格式
f.close()
print(data["Name"])
雖然上面的方式也能實現序列化與反序列化的效果,但是我們還是推薦使用標準的方式來操作
import json
data = {"Name":"XiaoMing","Age":22}
print(type(json.dumps(data))) //此處為測試,看一下dumps後的數據是什麽類型
f = open("test.txt","w",encoding="utf-8")
f.write( json.dumps(data) ) //使用json.dumps進行序列化
f.close()
接下來看一下json的反序列化
import json
f = open("test.txt","r",encoding="utf-8")
data = json.loads(f.read()) //使用json.loads進行反序列化
f.close()
print(data["Name"])
小總結:json只能處理一些簡單的數據格式,比如字典、列表、字符串等,但是json在所有的語言上都是通用的,比如用python的程序和java的程序進行交互,就需要用到json來進行轉換。
那如果想要處理一些復雜的數據呢,比如在字典中接收一個函數,看一下例子:
import pickle //需要導入pickle模塊
def hello(name):
print("name",name)
data = {"Name":"XiaoMing","Age":22,"aa":hello} //把函數的內存地址當做字典的值,比作復雜一些的數據類型
f = open("test.txt","wb") //因為pickle後的數據是二進制類型,所以打開模式要使用"b"
f.write(pickle.dumps(data))
f.close()
print(type(pickle.dumps(data))) //最後打印pickle.dumps後的數據類型
pickle反序列化
import pickle
def hello(name):
print("name",name)
f = open("test.txt","rb")
data = pickle.loads(f.read()) //pickle.loads為反序列化
f.close()
print(data["aa"]("bbb")) //此處為函數的傳參
小總結:pickle只能再python本語言中使用,不能跨語言使用。
python3數據序列化工具json