Python 对于Django模型Rest框架,返回键/属性JSON对象,而不是JSON数组
如标题中所述。我从后端返回了这样的JSON数组:Python 对于Django模型Rest框架,返回键/属性JSON对象,而不是JSON数组,python,django,backend,Python,Django,Backend,如标题中所述。我从后端返回了这样的JSON数组: [ {id:1, name:'name1'}, {id:2, name:'name2'}, {id:3, name:'name3'}, {id:4, name:'name4'} ] 我想返回这样的内容: { "1": {id:1, name:'name1'}, "2": {id:2, name:'name2'}, "3": {id:3, n
[
{id:1, name:'name1'},
{id:2, name:'name2'},
{id:3, name:'name3'},
{id:4, name:'name4'}
]
我想返回这样的内容:
{
"1": {id:1, name:'name1'},
"2": {id:2, name:'name2'},
"3": {id:3, name:'name3'},
"4": {id:4, name:'name4')
}
在Django Rest框架中是否可以发送这样的对象作为响应?显然不会有太多的密钥,因此大小不应该是一个问题。您可以在将数据发送到客户端之前修改数据
data = [
{id:1, name:'name1'},
{id:2, name:'name2'},
{id:3, name:'name3'},
{id:4, name:'name4'}
]
data = {key["id"]:value for value in data}
return JsonResponse(data)
如果您正在使用序列化程序,则可选择此选项
如果您使用的是序列化程序,请在序列化数据时使用来修改数据。它对性能的影响不会超过默认表示形式
class MySerializer(serializers.ModelSerializer):
class Meta:
model = MyModal
fields = ('foo', 'bar', .....,)
def to_representation(self, instance):
row = super(MySerializer, self).to_representation(instance)
return {row["id"]:row}
若和默认序列化程序数据相比,元素的数量变得非常大,那个么这将如何影响我的性能呢?很高兴知道您是否正在使用序列化程序,我已经编辑了我的答案。它不会影响性能。这将在第一个索引处返回一个包含所需对象的数组,而不是基本上自己返回对象@苏里亚维尔·辛格