python: Serialize and Deserialize complex JSON using jsonpickle

打印 上一主题 下一主题

主题 871|帖子 871|积分 2613

  1. # encoding: utf-8
  2. # 版权所有 2024 ©涂聚文有限公司
  3. # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
  4. # Serialize and Deserialize complex JSON in Python
  5. # 描述:pip install jsonpickle  https://github.com/jsonpickle/jsonpickle
  6. # Author    : geovindu,Geovin Du 涂聚文.
  7. # IDE       : PyCharm 2023.1 python 3.11
  8. # OS        : windows 10
  9. # Datetime  : 2024/11/19 20:33
  10. # User      : geovindu
  11. # Product   : PyCharm
  12. # Project   : pyGenerator
  13. # File      : main.py
  14. # explain   : 学习
  15. import json
  16. import jsonpickle
  17. from json import JSONEncoder
  18. from dataclasses import dataclass
  19. class Student(object):
  20.     """
  21.     """
  22.     def __init__(self):
  23.         """
  24.         """
  25.         self.firstname=None
  26.         self.lastname=None
  27.     @property
  28.     def FirstName(self):
  29.         """
  30.         :return:
  31.         """
  32.         return self.firstname
  33.     @FirstName.setter
  34.     def FirstName(self,firstname:str):
  35.         """
  36.         :param firstname:
  37.         :return:
  38.         """
  39.         self.firstname = firstname
  40.     @property
  41.     def LastName(self):
  42.         """
  43.         :return:
  44.         """
  45.         return self.lastname
  46.     @LastName.setter
  47.     def LastName(self,lastname:str):
  48.         """
  49.         :param lastname:
  50.         :return:
  51.         """
  52.         self.lastname=lastname
  53. class Team(object):
  54.     """
  55.     """
  56.     def __init__(self):
  57.         """
  58.         :param students:
  59.         """
  60.         self.students = None
  61.         self.teameName = None
  62.     @property
  63.     def Studnets(self) ->list[Student]:
  64.         """
  65.         :return:
  66.         """
  67.         return self.students
  68.     @Studnets.setter
  69.     def Studnets(self,students):
  70.         """
  71.         :param students:
  72.         :return:
  73.         """
  74.         self.students=students
  75.     @property
  76.     def TeamName(self):
  77.         """
  78.         :return:
  79.         """
  80.         return self.teameName
  81.     @TeamName.setter
  82.     def TeamName(self,teamname:str):
  83.         """
  84.         :param teamname:
  85.         :return:
  86.         """
  87.         self.teameName=teamname
  88.         
  89. if __name__ == '__main__':
  90.     """
  91.    
  92.     """
  93.     teams=[]
  94.     stu = []
  95.     student1 = Student()
  96.     student1.FirstName = "Geovin"
  97.     student1.LastName = "Du"
  98.     stu.append(student1)
  99.     student2 = Student()
  100.     student2.FirstName = "Sibo"
  101.     student2.LastName = "Tu"
  102.     stu.append(student2)
  103.     team = Team()
  104.     team.TeamName = "ICT"
  105.     team.Studnets = stu
  106.     teams.append(team)
  107.     stu2=[]
  108.     team = Team()
  109.     student2 = Student()
  110.     student1 = Student()
  111.     student1.FirstName="聚文"
  112.     student1.LastName="涂"
  113.     stu2.append(student1)
  114.     student2.FirstName="年生"
  115.     student2.LastName="涂"
  116.     stu2.append(student2)
  117.     team.TeamName="HR"
  118.     team.Studnets=stu2
  119.     teams.append(team)
  120.     print(teams)
  121.    
  122.     teamsJSON = jsonpickle.encode(teams)
  123.     print(teamsJSON)
  124.     with open('teams.json', "w") as outfile:
  125.          print(teamsJSON)
  126.          outfile.write(teamsJSON)
  127.          outfile.close()
  128.          
  129.     teamsObject = jsonpickle.decode(teamsJSON)
  130.     print("Object type is: ", type(teamsObject))
  131.     for i in teamsObject:
  132.         print("DEP:",i.teameName)
  133.         for st in i.students:
  134.             print(st.firstname,st.lastname)
  135.       
  136.     print("*********************")
  137.     readjson=''
  138.     with open('teams.json',mode="r", encoding="utf-8") as importfile:
  139.         readjson = importfile.readline()
  140.         print(readjson)
  141.     print("*********************")
  142.    
  143.     teamsObject = jsonpickle.decode(readjson)
  144.     for i in teamsObject:
  145.         print("DEP:",i.teameName)
  146.         for st in i.students:
  147.             print(st.firstname,st.lastname)
  148.    
  149.     print("****************")
复制代码
输出:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表