from typing import List
import json
榮譽
class Honor(object):
def __init__(self, name:str):
self.name = name
學生有多個榮譽
class Student(object):
def __init__(self, first_name: str, last_name: str, honor: List[Honor]):
self.first_name = first_name
self.last_name = last_name
self.honor = honor
父類包含多個學生:
class Team(object):
def __init__(self, students: List[Student]):
self.students = students
定義榮譽對象
honor1 = Honor(name="gold")
honor2 = Honor(name="sliver")
定義定義學生對象
student1 = Student(first_name="Geeky", last_name="Guy",honor=[honor1,honor2])
student2 = Student(first_name="GFG", last_name="Rocks",honor=[honor1,honor2])
定義團隊對象
team = Team(students=[student1, student2])
大家都知道普通的對象轉JSON,要使用.__dict__方法,爲了所有嵌套層次都能轉,我們定義default參數
使用lamdba函數把輸入o轉爲 o.__dict
json_data = json.dumps(team, default=lambda o: o.__dict__,
indent=4)
{
"students": [
{
"first_name": "Geeky",
"last_name": "Guy",
"honor": [
{
"name": "gold"
},
{
"name": "sliver"
}
]
},
{
"first_name": "GFG",
"last_name": "Rocks",
"honor": [
{
"name": "gold"
},
{
"name": "sliver"
}
]
}
]
}
反序列化
decoded_team = Team(**json.loads(json_data))