在 python 或 django 中将类对象列表转换为 json

2 python

my_objects = []
my_objects.append(Needed("bye",9))
my_objects.append(Needed("tata",8))
my_objects.append(Needed("hi",10))
Run Code Online (Sandbox Code Playgroud)

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

class Needed:

   def __init__(self, name, number):
      self.name = name
      self.number = number
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为 json order by count 如下

{
   "results":[
               { "name":"hi",
                 "number":"10"
                },
                { "name":"bye",
                 "number":"9"
                },
                { "name":"tata",
                 "number":"8"
                },
                ...........
                ...........
              ]
}
Run Code Online (Sandbox Code Playgroud)

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

bru*_*ers 6

首先,您需要使对象可 json 序列化。您可以提供一个default编码器函数或编写自己的编码器函数,JSONEncoder 如 FineManual 中提到的,但对于像您的示例这样的简单的一次性情况,从对象构建字典可能是最简单的解决方案:

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}
Run Code Online (Sandbox Code Playgroud)

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

results = [obj.to_dict() for obj in my_objects]
Run Code Online (Sandbox Code Playgroud)

根据以下条件对其进行排序number

results.sort(key=lambda obj: obj["number"])
Run Code Online (Sandbox Code Playgroud)

并将整个事情序列化:

jsdata = json.dumps({"results": results})
Run Code Online (Sandbox Code Playgroud)

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