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()
發佈了167 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章