首页 > 解决方案 > 在python或django中将类对象列表转换为json

问题描述

my_objects = []
my_objects.append(Needed("bye",9))
my_objects.append(Needed("tata",8))
my_objects.append(Needed("hi",10))

我有这样的对象列表(例如列表中的 5 个对象)

class Needed:

   def __init__(self, name, number):
      self.name = name
      self.number = number

我需要按如下计数将其转换为 json 顺序

{
   "results":[
               { "name":"hi",
                 "number":"10"
                },
                { "name":"bye",
                 "number":"9"
                },
                { "name":"tata",
                 "number":"8"
                },
                ...........
                ...........
              ]
}

那么如何在 django 中实现这一点

标签: python

解决方案


首先,您需要使您的对象 json 可序列化。您可以提供default编码器功能或编写自己的编码器功能JSONEncoder ,如 FineManual 中所述,但对于一个简单的一次性案例,例如从您的对象构建 dicts 的示例可能是最简单的解决方案:

class Needed(object):

   def __init__(self, name, number):
      self.name = name
      self.number = number

  def to_dict(self):
      return {"name": self.name, "number": self.number}

然后从您的对象构建一个字典列表:

results = [obj.to_dict() for obj in my_objects]

排序基于number

results.sort(key=lambda obj: obj["number"])

并序列化整个事情:

jsdata = json.dumps({"results": results})

这是非常普通的 Python 东西——用对象构建字典,将它们列成一个列表并对列表进行排序。


推荐阅读