Python - python json to my class

xx online
xx want to say something
2 min readJan 14, 2019

做 api 遇到的狀況:
取得 json 的 request,希望到程式中轉成自己定義的 class
一方面使用,一方面檢查進來的參數是不是和定義的相同

我是使用 flask ,所以有api可以取得 request,取回來已經是 dict 格式了
所以我可以先建立一個自己的 class 實例,
把 request 這個 dict 交給 myclass 的 __dict__
等於是定義了 myclass 的內容

myclass = model.class_user()
myclass.__dict__ = req_user_json
print(vars(myclass))

但這時出現了個問題,假設今天這個 request 給錯了,
或是多給了一些屬性,也會一併給了 myclass
所以無法對應,會和我們自己定義的有出入
在網路上找到一個對我來說比較好了解的方法,marshmallow
在定義 myclass 的時後,加上 marshmallow 的 Schema
然後屬性用 marshmallow 的 fields 來定義
接著用 dump 的方式把 dict 轉成 class
用這樣的方式來轉,如果 json 的 key 沒有在 class 的屬性中,就不會被解析出來
這樣就可以做個簡單的檢查了

from marshmallow import Schema, fields
class myclass(Schema):
name = fields.Str()
def getclass():
json = request.get_json()
result = myclass.dump(json)
return result.data

--

--