Python複雜嵌套對象轉Json的快速技巧

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))


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章