如何更改响应结构

时间:2020-04-22 07:37:52

标签: python django-rest-framework

我正面临着改变以下结构的问题.....

这就是我正在获得的结构

{
    "labels": [
        "List A",
        "List B",
        "List C",
        "List D"
    ],
    "data": [
        19,
        25,
        30,
        32
    ],
    "colors": [
        "#e15759",
        "#f28e2b",
        "#76b7b2",
        "#4e79a7"
    ],
}

但是我想将以下数据更改为以下方法

    {
        "category": "List D",
        "value": 32,
        "colors":         "#e15759"  
    },
    {
        "category": "List C",
        "value": 25
        "colors": "#f28e2b"
    },
    {
        "category": "List B",
        "value": 30,
        "colors": "#76b7b2"
    },
    {
        "category": "List A",
        "value": 19,
        "colors" : "#4e79a7"

    }

这是我的代码

class AbcListAPI(APIView):
    def get(self, request, format=None):
        a = data_fuction()
        return Response(a)

在此代码中,我从代码的另一部分中使用的data_fuction函数获取此响应...。因此,我无法从那里编辑该响应.....但是在此函数中,我需要格式化此代码....

1 个答案:

答案 0 :(得分:5)

您需要将一种结构转换为另一种结构的功能

data = {
    "labels": [
        "List A",
        "List B",
        "List C",
        "List D"
    ],
    "data": [
        19,
        25,
        30,
        32
    ],
    "colors": [
        "#e15759",
        "#f28e2b",
        "#76b7b2",
        "#4e79a7"
    ],
}

def convert_data(data):
    result = []
    for l, d, c in zip(data['labels'], data['data'], data['colors']):
        result.append({
            'category': l,
            'value': d,
            'colors': c,
        })
    return result


print(convert_data(data))