如何将Django模型实例列表作为JSON返回?

2024-09-25 00:36:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个观点:

class ListUnseenFriendRequests(generics.GenericAPIView):
    permission_classes = (IsAuthenticated,)

    def get(self, request, format=None):
        friendship_requests_list = Friend.objects.unread_requests(user=request.user)
        friendship_requests_rough_json = [serializers.serialize('json', [obj]) for obj in friendship_requests_list]
        friendship_requests_json = [obj.strip("[]") for obj in friendship_requests_rough_json]
        return Response(friendship_requests_json, content_type="application/json")

下面是JSON格式的:

^{pr2}$

在android客户端上,向此视图发出请求时,会出现以下错误:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 3 path $[0]

我认为这意味着不应该有任何"包装JSON响应。如果这是问题,我如何删除它们?如果这不是问题所在,我该如何解决?在


Tags: injsonobjforrequestrequestslistclass
1条回答
网友
1楼 · 发布于 2024-09-25 00:36:41

更好的方法是为您的朋友模型创建一个序列化程序,并使用该序列化程序类将其转换为JSON。 但如果你不想用它,这将给你一个接近解决你正在尝试的方法

from django.http import JsonResponse
import json
class ListUnseenFriendRequests(generics.GenericAPIView):
    permission_classes = (IsAuthenticated,)

    def get(self, request, format=None):
        friendship_requests_list = json.loads(serializers.serialize('json',Friend.objects.unread_requests(user=request.user))
        return JSONResponse(friendship_requests_list,safe=False)

serializers.serialize方法正在序列化Django对象并将其转换为表示字符串。我们知道字符串应该是一个JSON表示,我们将字符串转换为JSON,并将其作为JSONResponse发送。 参考this

相关问题 更多 >