【问题标题】:Django REST - JSON API results as list by keyDjango REST - JSON API 结果作为按键列表
【发布时间】:2020-09-27 10:03:56
【问题描述】:

我有一个使用 Django Rest Framework 制作的非常基本的 API,其输出如下:

[
    {
        "name": "John",
        "city": "chicago",
        "age": "22"
    },
    {
        "name": "Gary",
        "city": "florida",
        "age": "35"
    },
    {
        "name": "Selena",
        "city": "vegas",
        "age": "18"
    }
]

我想将其转换为以下格式以简化其数据在图表中的使用。

{
    "name": ["John", "Gary", "Selena"]
    "city": ["chicago", "vegas", "florida"]
    "age": ["22", "35", "18"]
}
  1. 有没有一种简单的方法可以在 Javascript(和 Python 只是为了好奇)中完成?

2。可以通过调整DRF中的Serializer或者ViewSet来主动解决吗?

【问题讨论】:

  • 你想要python代码或javascript代码
  • 在第一个问题中,我明确询问 javascript,如果可能的话,询问 python。那么第二个问题是Python。
  • 您可以同时使用它来进行转换。如果您在 python 级别转换,它将用于其他一些前端。否则你想一次又一次地转换前端
  • 这就是我问第二个问题的原因 :) 你知道处理这个问题的 Python 方法吗?
  • 是的,我知道,您可以获取两级数据。一个是序列化程序级别,一个是查询集级别或普通 for 循环

标签: javascript python json django django-rest-framework


【解决方案1】:

Javascript 版本:

const data = [
    {
        name: 'John',
        city: 'chicago',
        age: '22',
    },
    {
        name: 'Gary',
        city: 'florida',
        age: '35',
    },
    {
        name: 'Selena',
        city: 'vegas',
        age: '18',
    },
];

const result = Object.keys(data[0]).reduce((obj, key) => {
    obj[key] = data.map(_ => _[key]);
    return obj;
}, {});

console.log(result);

【讨论】:

    【解决方案2】:

    在 Python 中你可以这样做:

    data = [
        {
            "name": "John",
            "city": "chicago",
            "age": "22"
        },
        {
            "name": "Gary",
            "city": "florida",
            "age": "35"
        },
        {
            "name": "Selena",
            "city": "vegas",
            "age": "18"
        }
    ]
    
    result = {}
    
    for key in data[0]:
        result[key] = []
    
    for entry in data:
        for key in entry:
            result[key].append(entry[key])
    
    print(result)
    

    【讨论】:

      【解决方案3】:

      检查一下

      data = [
          {
              "name": "John",
              "city": "chicago",
              "age": "22"
          },
          {
              "name": "Gary",
              "city": "florida",
              "age": "35"
          },
          {
              "name": "Selena",
              "city": "vegas",
              "age": "18"
          }
      ]
      output = []
      name = []
      city = []
      age = []
      
      for i in data:
          name.append(i['name'])
          city.append(i['city'])
          age.append(i['age'])
      output.append({"name":name,"city":city,"age":age})
      print(output)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-27
        • 1970-01-01
        相关资源
        最近更新 更多