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
相关产品推荐
相关产品推荐

