14_Python之Json模块和Pickle模块详解

一、json模块详解

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。

JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。

这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

二、python类型数据和JSON数据格式互相转换规则

在这里插入图片描述在这里插入图片描述
python 中str类型到JSON中转为unicode类型,None转为null,dict对应object;
pyhton中的集合不能转成json格式。

三、数据类型编解码

json.dumps  #将python对象编码成JSON字符串
json.loads  #将已编码的JSON字符串解码成Python对象
json.dump  #将对象序列化并保存到文件
json.load  #将序列化字符串从文件读取并反序列化

四、序列化及反序列化常用参数

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, 
	allow_nan=True, cls=None, indent=None, separators=None, 
	encoding="utf-8", default=None, sort_keys=False, **kw)
ensure_ascii=False: 中文存储需要设定
 indent=4: 增加缩进,增强可读性,但缩进空格会使数据变大
 separators=(',',':'): 自定义分隔符,元素间分隔符为逗号, 字典key和value值的分隔符为冒号
 sort_keys=True: 字典排序

五、自定义复杂数据类型编解码

例如我们碰到集合对象, datetime对象,或者自定义的类对象等json默认不支持的数据类型时,我们就需要自定义编解码函数。有两种方法来实现自定义编解码。

六、Pickle模块详解

python的pickle模块实现了python的所有数据序列和反序列化。与JSON不同的是pickle不是用于多种语言间的数据传输,它仅作为python对象的持久化或者python程序间进行互相传输对象的方法,因此它支持了python所有的数据类型。

cPickle是pickle模块的C语言编译版本相对速度更快。

七、JSON和pickle模块的区别

1、JSON只能处理基本数据类型。pickle能处理所有Python的数据类型。

2、JSON用于各种语言之间的字符转换。pickle用于Python程序对象的持久化或者Python程序间对象网络传输,但不同版本的Python序列化可能还有差异。

"""
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。

JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。

这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。


"""
import  json
# 1). 创建python对象
users = {}
for item in range(100):
    users['user%s' %(item)] = '密码'


# 2). 将python对象编码为json对象
# """
# indent=4 -----缩进为4
# ensure_ascii=False---如果显示中文需要设置
# separators=None  -- 修改默认分隔符
#         ``separators`` should be an ``(item_separator, key_separator)``
#         tuple.  The default is ``(', ', ': ')``
#
# sort_keys  -----        对字典的key值进行排序
# """
# import  json
# json_users = json.dumps(users, indent=4, ensure_ascii=False, separators=('*', '-'), sort_keys=True)
# print(json_users)
# print(type(json_users))



# # 3). 将python对象编码为json格式的字符串, 并保存到指定文件中;
# with open('doc/users.json', 'w') as f:
#     json.dump(users, f, indent=4, ensure_ascii=False)



# 4).  loads
# with open('doc/users.json') as f:
#     content = f.read()
# user_obj = json.loads(content)
# print(user_obj)
# print(type(user_obj))



# 5). load
with open('doc/users.json') as f:
    user_obj = json.load(f)
print(user_obj)
print(type(user_obj))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值