首页 > 解决方案 > 如何获取 API 的嵌套对象

问题描述

我有这样的数据:

{
    "id": 56,
    "number": "82467",
    "date": "2021-08-19",
    "exams": [
        {
            "type": "fff123",
            "stamp": "2021-08-19R17:00:17",
            "review": [
                {
                    "code": "1118",
                    "value": "3",
                }
            ],
        },
        {
            "type": "nnn123",
            "stamp": "2021-08-19R12:00:47",
            "review": [
                {
                    "code": "1120",
                    "value": "1",
                },
                {
                    "code": "1121",
                    "value": "2",
                },
            ]
        }
    ]
}

而这堂课views.py

class ResultViewSet(viewsets.ReadOnlyModelViewSet):      
        queryset = Result.objects.all()                  
        serializer_class = ResultSerializer              
        lookup_field = 'number'                          
        lookup_url_kwarg = 'number'  


    def get_object(self):
          number = self.kwargs['number']
          type = self.kwargs['type']
          obj = get_object_or_404(self.queryset.filter(number=number))
          filtered_exams = list(filter(lambda x: x['type'] == type, obj.exams_data))

我必须在哪里写什么?在那里,我必须在 serializer.py 中为这个 obj 的序列化程序实例获取嵌套的 JSON(在这一点上,我可能必须json.dumps(filtered_exams)或做其他事情才能从我的 obj 中取出嵌套的 JSON 字段)。我不知道该怎么做。最后我想要:

对于网址http://result/82467/fff123

{
    "code": "1118",
    "value": "3"
}

对于网址http://result/82467/nnn123

{
    "code": "1120",
    "value": "1",
},
{
    "code": "1121",
    "value": "2"
}

我的问题是如果我必须获取嵌套的 JSON - “考试”JSONField()在我的 Result 模型中,然后从中获取 JSON 对象。我所有的 URL 和序列化程序只有在这种情况下才有问题。

标签: jsondjango-rest-framework

解决方案


推荐阅读