You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pyramid后端返回JSON格式异常:Id字段变为数组求助

问题原因与解决方法:Pyramid返回Id字段为数组而非字符串

核心问题

你的List类构造方法里,self.id = Id, 末尾的逗号导致self.id被赋值为一个元组(而非单个字符串)。Pyramid的JSON序列化器处理元组时,会将其转换为JSON数组格式,所以Angular收到的Id字段就变成了["01"]这样的数组。

另外视图代码里还有一个语法错误:request.matchdict['lijstID'] == 'techniek': 是无效表达式,应改为if判断语句,否则后续代码块无法正确执行。

解决步骤

  • 修正List类构造方法:去掉self.id = Id,末尾的逗号,让self.id直接接收字符串值
  • 修复视图语法错误:将无效表达式改为if判断

修正后的代码

List类代码

class List():
    id = None
    def __init__(self, Id, Name, Image):
        self.id = Id  # 移除末尾逗号
        self.name = Name

    def __json__(self, request):
        return {
                'Id': self.id,
                'Name': self.name
                }

Pyramid视图代码

@view_config(route_name='lijsten', renderer='json', request_method='GET')
def lijsten_view(request):
    # 修正为if判断逻辑
    if request.matchdict['lijstID'] == 'techniek':
        technieken = {
                       "01" : "Berliner wand" ,
                       "02" : "Secanspalen wand",
                       "03" : "Cutter Soil Mix wand",
                       "10" : "Avegaarpaal",
                       "11" : "Verbuisde Boorpaal",
                       "12" : "Grondverdingende Schroefpaal",
                       "13" : "Funderingsput",
                       "14" : "Micropaal"
                     }
        
        jsonlist = []
        for key, value in technieken.items():
            tech = List(str(key), str(value), '')
            jsonlist.append(tech)
        return jsonlist

验证

修正后,Pyramid返回的JSON数据中Id字段会是字符串类型(如"01"),Angular就能接收到预期格式的数据。

内容的提问来源于stack exchange,提问作者thomasc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 14:46:06