目录
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()