Python中物件序列化和反序列化

MedusaSorcerer發表於2020-04-04

MedusaSorcerer的部落格


面對Python程式碼中, 如果我們想用一個Class來進行資料的序列化和反序列化的話, 可能用普通的方式會加大執行過程, 如同我們有這樣的一個例子:

#!/usr/bin/env python
# _*_ coding: UTF-8 _*_


class Data:
    params: None


data = [
    {
        'params': 'Medusa'
    },
    {
        'params': 0
    }
]
複製程式碼

如果我們想把dataData例項的方式組成陣列, 你可能需要直接將資料進行例項, 並將例項物件用列表裝載, 當然了, 你可以進行for迴圈進行例項並新增到一個事先宣告的列表中, 那你可能想到生成器了, 更加簡單, 就可以實現該需求, 那我們試想一下, 怎麼把我們生成的列表物件還原成data資料呢?

在Python程式碼裡面, 我們當然可以實現, 可能在實現方法上沒有那麼美觀了。

這個時候我們需要這樣做:

python -m pip install attrs
python -m pip install cattrs
複製程式碼

安裝attrscattrs這兩個庫, 那我們怎麼使用呢? 看例子:

#!/usr/bin/env python
# _*_ coding: UTF-8 _*_
from attr import attrs, attrib
from cattr import structure, unstructure


@attrs
class Data:
    params = attrib()


data = {
    'params': 'Medusa',
}

instance = structure(data, Data)
json = unstructure(instance)
複製程式碼

我們輸出一下instancejson的值:

# instance:
Data(params='Medusa')

# json:
{'params': 'Medusa'}
複製程式碼

並且我們使用instance.params所得到的值為Medusa, 看到這兒你是不是知道怎麼在物件之間序列化和反序列化了? 是的, 當然了, 你可能有更好的庫, 歡迎你的留言分享哦~

相關文章