python - 在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 中实现这一点
解决方案
首先,您需要使您的对象 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 东西——用对象构建字典,将它们列成一个列表并对列表进行排序。
推荐阅读
- google-chrome-devtools - 有没有办法将 chrome profiler 与控制台日志或在时间轴上放置标记相关联?
- php - Laravel selectRaw中按月分组的SQL
- ibm-mq - 如何在 CachingConnectionFactory 中查找会话缓存耗尽
- java - 获取组件需要一个名为“redisTemplate”的 bean,但无法找到。用于多种不同的 RedisTemplates 配置
- ios - 在 CollectionViewCell 中居中 UIImegaeView
- amazon-web-services - 如何创建具有只读访问权限的 Redshift 用户?
- javascript - 期望调用一个断言,但接收到零个断言调用。为什么?
- javascript - 使用脚本重置子值
- html - 简单的图像叠加悬停效果图像用完 div
- python - 重新标记电子邮件地址