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