Flask REST API 返回 json 数据,末尾有额外的空大括号

Flask REST API returned json data with extra empty curly brackets at the end

所以我正在制作此 API 以与我的 Vue 前端一起使用,起初一切正常,但我不知道前端突然无法正确显示检索到的数据,我我正在使用 select 上的数据,它只显示空选项。当我检查邮递员 API 返回的数据时,它显示如下内容:

[
  [
    //my data here
  ],
  {}
]

如您所见,子句末尾有一个空的大括号,我怀疑这是前端无法正确显示数据的原因,但如果不是这样,那我就不会不知道什么是...请帮助我...

这是我的前端代码:

<select v-model="cpuSelect" name="cpu" id="cpu" class="form-control" tabindex="12">
      <option v-for="cpu in cpus" :key="cpu.id">{{ cpu.Name }}</option>
</select>

以及 vue 中的脚本:

import axios from 'axios';
export default {
  data() {
    return {
      cpus: [],
      cpuSelect: ''
    }
  },
  async mounted() {
    this.load()
  },
  methods: {
      async load(){
        const response = await axios.get(`http://127.0.0.1:5000/api/v1/parts/cpu`)
        this.cpus = response.data
      }
  }
}

对于烧瓶模型:

class cpu(db.Model):
id = db.Column(db.Integer, primary_key=True)
Name = db.Column(db.String)
Socket = db.Column(db.String) 

@staticmethod
def get_all_cpu():
    return cpu.query.all()

@staticmethod
def get_cpu(id):
    return cpu.query.get(id)

def __repr(self):
    return '<id {}>'.format(self.id)

class cpuSchema(Schema):
    id = fields.Int(dump_only=True)
    Name = fields.Str(dump_only=True)
    Socket = fields.Str(dump_only=True)

烧瓶视图:

@parts_api.route('/cpu', methods=['GET'])
def get_all_cpu():
  cpu_query_all = cpu.get_all_cpu()
  data = cpu_schema.dump(cpu_query_all, many=True)
  return custom_response(data, 200)

def custom_response(res, status_code):
  """
  Custom Response Function
  """
  return Response(
    mimetype="application/json",
    response=json.dumps(res),
    status=status_code
  )

请帮帮我...

尝试从“转储”调用中删除“很多”

def get_all_cpu():
cpu_query_all = cpu.get_all_cpu()
data = cpu_schema.dump(cpu_query_all)
return custom_response(data, 200)

我假设 cpu_schema.dump() 结果的格式是 MarshalResult(data=[], errors={}),那就是

    @parts_api.route('/cpu', methods=['GET'])
    def get_all_cpu():
      cpu_query_all = cpu.get_all_cpu()
      data = cpu_schema.dump(cpu_query_all, many=True).data
      return custom_response(data, 200)

实际上空大括号是MarshalResult的错误信息。

参考: