Python Json 和 Pickle 模块

目录

一. dumps和 dump

1、dumps

2、dump

二、loads 和 load

1、loads

2、load


1、JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。JSON的数据格式其实就是python里面的字典格式,里面可以包含方括号括起来的数组,也就是python里面的列表。

在python中,有专门处理json格式的模块—— json 和 picle模块

Json   模块提供了四个方法: dumps、dump、loads、load

pickle 模块也提供了四个功能:dumps、dump、loads、load

2、 json模块和pickle模块都有  dumps、dump、loads、load四种方法,而且用法一样。

3、不同的是json模块序列化出来的是通用格式,其它编程语言都认识,就是普通的字符串,而picle模块序列化出来的只有python可以认识,其他编程语言不认识的,表现为乱码

4、picle可以序列化函数,但是其他文件想用该函数,在该文件中需要有该文件的定义(定义和参数必须相同,内容可以不同)

一. dumps和 dump

1、dumps

json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数。

# encoding: utf-8

"""
@author: sunxianpeng
@file: json_pickle_test.py
@time: 2019/12/1 20:04
"""
import json

def dumps():
    # dumps可以格式化所有的基本数据类型为字符串
    list_json = json.dumps([])
    # 数字
    num_json = json.dumps(1)
    # 字符串
    str_json = json.dumps('abc')
    dict = {"name": "Tom", "age": 23}
    dict_json = json.dumps(dict)  # 字典

    print('list json = {}'.format(list_json))
    print('num json = {}'.format(num_json))
    print('str json = {}'.format(str_json))
    print('dict json = {}'.format(dict_json))
    print(type(dict_json))
    with open('test.json','w',encoding='utf-8') as f:
        # indent 超级好用,格式化保存字典,默认为None,小于0为零个空格,美化json格式
        f.write(json.dumps(dict, indent=4))

if __name__ == '__main__':
    dumps()

2、dump

json.dump()用于将dict类型的数据转成str,并写入到json文件中。下面两种方法都可以将数据写入json文件

# encoding: utf-8

"""
@author: sunxianpeng
@file: json_pickle_test.py
@time: 2019/12/1 20:04
"""
import json

def dump():
    dict = {"name": "Tom", "age": 24}
    json.dump(dict,open('test.json','w',encoding='utf-8'))

if __name__ == '__main__':
    dump()

二、loads 和 load

1、loads

 json.loads()用于将str类型的数据转成dict。作用于 dumps 想反

# encoding: utf-8

"""
@author: sunxianpeng
@file: json_pickle_test.py
@time: 2019/12/1 20:04
"""
import json

def loads():
    dict_1 = {"name": "Tom", "age": 23}
    dict_json = json.dumps(dict_1)  # 字典
    dict_2 = json.loads(dict_json)
    print('dict_1 = {}'.format(dict_1))
    print('dict_2 = {}'.format(dict_2))

    num_json_1 = json.dumps(1)
    num_json_2 = json.loads(num_json_1)
    print(num_json_2)#1
    print(type(num_json_2))#<class 'int'>

if __name__ == '__main__':
    loads()

2、load

json.load()用于从json文件中读取数据。

# encoding: utf-8
import json

def load():
    dict_json = json.load(open('test.json','r',encoding='utf-8'))
    print(type(dict_json))#<class 'dict'>
    print(dict_json)#{'name': 'Tom', 'age': 24}

if __name__ == '__main__':
    load()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值