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 中实现这一点
首先,您需要使对象可 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 东西——用对象构建字典,创建它们的列表并对列表进行排序。