序列化模块(json、pickle)

序列化模块(json、pickle)[Python常见问题]

序列化模块

1、什么是序列化、反序列化?

  序列:指的就是字符串(*****)

  序列化:将python或者其他语言的数据类型转换成字符串类型。

    python默认数据类型:int、float、str、list、tuple、dict、bool、set

 

  过程:

    序列化:  其他数据类型 —> 字符串 —> 文件中

    反序列化:  文件中 —> 字符串 —> 其他数据类型

 

 

2、json模块

  json是一个序列化模块,是一个“第三方”的特殊数据格式

 

  使用json保存数据:

    可以将python数据类型 —> json数据格式 —> 字符串 —> 文件中,

  其他语言使用pathon数据:

    文件中 —> 字符串 —> json数据格式 —> 其他语言的数据类型

 

  为什么要使用json模块

  为了让不同的语言之间数据可以共享

  由于各种语言的数据类型不一,但数据一样,比如python不能直接使用其他语言的数据类型,必须将其他语言的数据类型转换成json数据格式,python获取到json数据之后可以将json转换成python的数据类型拿来使用

  注意:在json中所有的字符串都是双引号

 

  哪些数据类型可以被序列化?

   列表、元组、字典都可以,集合set不可以

  json.dumps()

    - json.dumps(), f = open(), f.write

    # 序列化:.dumps()将python数据 —> json数据格式 —> 字符串

  json.loads()

    - f = open(), str = f.read(), json.loads(str)

    # 反序列化:.loads()字符串 —> json数据格式 —> python或者其他语言的数据类型

  注意:上面两种方法不会内部不能读、写文件,需要手动写代码

 

  例1:使用json模块存、取列表

# 存列表
import json
list1 = ["bear", "apple", "orange", "李二狗"] # .dumps()将python数据 ---> json数据格式 ---> 字符串 json_list1 = json.dumps(list1, ensure_ascii=False) # ensure_ascii将默认的ascii取消设置为False,可以在控制台看到中文,否则中文显示为bytes类型数据 print(json_list1) print(type(json_list1)) # 字符串类型 # .loads()字符串 ---> json数据格式 ---> python数据 list2 = json.loads(json_list1) print(list2) print(type(list2)) # 列表类型
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 序列化模块(json、pickle)