Как получить JSON из вложенного объекта Python

Класс simplobj:

 def _init_(self,fname,lname,depart):
       self.fname=fname
       self.lname=lname
       self.depart = depart

Класс jsonobj:

  array = [] 
  def _init_(self,time,listOfSimpleObj):
       self.time = time
       self.array = listofSimpleObj 

Класс Main:

  listOfSimpleObj =[]
  sobj = simplobj("fname1","lname1","depart1")
  listOfSimpleObj.append(sobj)
  outputjsonobj = jsonobj(time,listOfSimpleObj)
  output = json.dumps(outputjsonobj._dict_)



output: { "time" : "time", "array":  [ 
{ "fname": "fname1", "lname": "lname1", "depart": "depart1"},
{ "fname": "fname2", "lname": "lname2", "depart": "depart2"},
{ "fname": "fname3", "lname": "lname3", "depart": "depart3"}  ] }
-1
user506129 27 Окт 2020 в 14:08

1 ответ

Лучший ответ

Вы можете создать json.JSONEncoder, чтобы указать, как ваши классы должны быть сериализованы:

class MyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, simplobj) or isinstance(obj, jsonobj):
            return obj.__dict__
        return json.JSONEncoder.default(self, obj)

...

output = json.dumps(outputjsonobj, cls=MyEncoder)
2
Hadi Zolfaghari 27 Окт 2020 в 11:20