首頁 >後端開發 >Python教學 >Python下JSON和pickle的用法介紹(附程式碼)

Python下JSON和pickle的用法介紹(附程式碼)

不言
不言轉載
2018-10-10 16:34:562119瀏覽

這篇文章帶給大家的內容是關於Python下JSON和pickle的用法介紹(附程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

一:簡介

(1)JSON (JavaScript Object Notation) 是一種輕量級(XML重量級)的資料交換格式。
   是為了資料交換而客製化的一種規則,它是基於ECMAScript的一個子集。

(2)JSON是一種資料格式!
   字串是JSON的表現形式。 (符合JSON格式的字串叫做JSON字串)

(3)Python3中可以使用json 模組來對JSON 資料進行編解碼,它包含了兩個函數:
json.dumps() : 對資料進行編碼。
json.loads(): 對資料進行解碼。

(4)JSON的優點是:易於閱讀、易解析、網路傳輸效率高、跨語言交換資料

二:python 編碼為JSON型別轉換對應表:

    _______________________________________________
    |    python           |         JSON            |
    -------------------------------------------------
    |    dict             |        object           |
    -------------------------------------------------
    |    list,tuple       |         array           |
    -------------------------------------------------
    |    str              |        string           |
    -------------------------------------------------
    |   int,float,Enums   |       number            |
    -------------------------------------------------
    |   True,False,None   |    true,false,null      |
    -------------------------------------------------

三: 如果你要處理的是檔案而不是字串,可以使用
json.dump()
json.load()

四:用pickle對資料序列化與反序列化

(1)方法:
pickle.dump()
       pickle.load()
      pickle.dumps()
  kle   pic kle loads ()

(2)資料型態:
       所有python支援的原生型別:布林值,整數,浮點數,複數,字串,位元組,None。
       由任何原生類型組成的列表,元組,字典和集合。
       函數,類,類別的實例

五:JSON和pickle之間的區別

JSON序列化和反序列化的目的是將Python資料類型轉換為JSON標準類型,
   或將JSON類型的資料轉換為python的資料類型,從而實現不同語言之間的資料交換!
pickle:在程式運作過程中希望保存一個數據,重複使用或傳送給其他人,可以採用這方式
   將資料寫入文件,支援所有資料類型!

import json
import pickle
# ----------------------------------------------#
# 反序列化
# ----------------------------------------------#
# object
json_str = '{"name":"qiyue", "age":18}'     # JSON字符串
student = json.loads(json_str)    # JSON对象转换为字典
print(student)
print(json_str)
print(type(student))

# object
json_str1 = '[{"name":"qiyue", "age":18, "flag":false}, ' \
            '{"name":"qiyue", "age":18}]'     # JSON字符串
student1 = json.loads(json_str1)    # JSON对象转换为字典
print(type(student1), student1)
print(student1[0])

# ----------------------------------------------#
# 序列化
# ----------------------------------------------#
student2 = [
                {"name": "qiyue", "age": 18, "flag": False},
                {"name": "qiyue", "age": 18}
           ]

json_str1 = json.dumps(student2)    # 转换为字符串后可以利用正则表达式处理字符串
print(type(json_str1), json_str1)

# ----------------------------------------------#
# 处理的是文件
# ----------------------------------------------#
# 将数据写入文件
student3 = [
                {"name": "qiyue", "age": 18, "flag": False},
                {"name": "qiyue", "age": 18}
           ]
with open('data.json', 'w') as f:
    json.dump(student3, f)

# 读取数据
with open('data.json', 'r') as f:
    data = json.load(f)


# dumps(object)将对象序列化
list_a = ["English", "Math", "Chinese"]
list_b = pickle.dumps(list_a)   # 序列化数据
print(list_a)
print(list_b)

# loads(object)将对象原样恢复,并且对象类型也恢复原来的格式
list_c = pickle.loads(list_b)
print(list_c)


# dumps(object,file)将对象序列化后存储到文件中
group1 = ("baidu", "wen", "qingtian")
f1 = open('group.txt', 'wb')
pickle.dump(group1, f1, True)
f1.close()

# load(object, file)将文件中的信息恢复
f2 = open('group.txt', 'rb')
t = pickle.load(f2)
f2.close()
print(t)

以上是Python下JSON和pickle的用法介紹(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除