文章目录

  • 数据序列化
  • 反序列化
  • JSON
  • JSON的方法
  • json.dumps 将数据dumps到文件中示例
  • dumps的内容
  • loads 将数据取出来 示例
  • pickle
  • 使用json来dumps一个函数
  • 输出文件的内容
  • 使用pickle来dumps一个函数
  • 输出文件的内容
  • pickle来loads文件中的数据
  • dumps与dump的区别
  • 输出的文件内容


数据序列化

有时需要将内存中的数据存储到硬盘中,而此时就内存中的二进制数据变成文件进行存储的过程就叫序列化。python称这个过程为picking。在其它语言中有叫serialization等等。

反序列化

将存储在硬盘上的数据读取出来的过程就称为反序列化,也叫unpickling.

JSON

JSON用于将数据对象在不同语言之间进行传递,相当于一个翻译的过程,要序列成标准格式。XML也是一种标记语言,也有序列化的功能,但是JSON更易用,更易读取,且比XML更快,可直接在web界面中读取,所以更通用。

JSON类型

python类型

{}

dict

[]

list

“string”

str

JSON的方法

方法名

用途

dumps

序列化过程,将数据存储成文件

dump

与dumps一样,但可连同文件一块儿操作,具体可查看后面的小实验

loads

反序列化过程,将文件读取出来

load

与loads一样,但可连同文件一块儿操作,具体可查看后面的小实验

json.dumps 将数据dumps到文件中示例

import json

dictory = {"Name":"Elon Musk","Company":"Tesla","Age":48}

data = json.dumps(dictory)

file = open("file.json","w")
file.write(data)
file.close()

dumps的内容

{"Name": "Elon Musk", "Company": "Tesla", "Age": 48}

dumps出来的内容是一个“像字典”的文本。是一个json格式的字条串

loads 将数据取出来 示例

将文件内容取出来

import json

json_data = open("file.json","r")
data = json_data.read()
data = json.loads(data)
print(data)
print(data["Name"])

"""
{'Name': 'Elon Musk', 'Company': 'Tesla', 'Age': 48}
Elon Musk
"""

没办法将更高级的字符串转换,如函数,如类。像这类需要转换可以用pickle。

pickle

pickle,是一个功能与JSON类似的模块,但是只能在python之间进行转换,无法与其它开发语言互相转换,pickle支持的数据类型更多。

使用json来dumps一个函数

import json

def functest():
    print("ok")


data = json.dumps(functest())
file = open("test.json","w")

file.write(data)

输出文件的内容

null

使用pickle来dumps一个函数

import pickle

def functest():
    print("ok")


data = pickle.dumps(functest())
file = open("test.json","wb")

file.write(data)

pickle只支持字节类型的数据

输出文件的内容

�N.

输出的文件为一串看不懂的字符,但是确实已经输出到文本中了。

pickle来loads文件中的数据

pickle可以序列化一个函数,但是函数是指向内存空间的,而移植到别的电脑的时候就无法读出来了。所以在读取的时候也需要有原函数存在,

import pickle

def functest():
    print("ok")

pickle_data = open("test.json","rb")

data = pickle_data.read()
data = pickle.loads(data)
print(data)

dumps与dump的区别

dump()可以直接接受两个参数,直接将内容dump到文件中。不需要单独写open()的方法来写入文件

import json
dictory = {"Name":"Elon Musk","Company":"Tesla","Age":48}

file = open("test2.json","w")
data = json.dump(dictory,file)
file.close()
print(data)

输出的文件内容

{"Name": "Elon Musk", "Company": "Tesla", "Age": 48}