我使用的是Django Rest framework2.4,在序列化程序中,我有这段代码
def validate_fields(self, attrs, source):
print(attrs)
fields = json.loads(attrs[source])
我一直在听到这样的错误:没有JSON对象可以被解码。^{cd1>}被调用,但获取^{{cd2>}作为字符串,而不是Python字符串列表。
我现在正在得到
^{pr2}$
当我想收到这个的时候,我就是这么发的
^{pr3}$
Tags:
Django-REST框架为您处理JSON解码。在
您的
attrs
的输出是有意义的:它是一个Python字典,包含一个带有字符串值的Python列表。不需要进一步解码,因为Django REST框架在接收请求时已经为您完成了这项工作。在现在可以使用
attrs[source]
的值了,它的格式是您期望的。您可能希望得到一个整数列表(不是字符串化的整数),在这种情况下,您可以对该列表进行后期处理并使用int
对其进行映射。如果不是,则attrs
的输出将如下所示:注意新的引号。这意味着Django-REST框架无法读入JSON数据,因此它将其作为字符串提供给您。这也可能意味着它不知道把它作为一个列表来阅读,在这种情况下,继续阅读以找到第二个可能的解决方案。在
还要确保序列化程序上的} 。在
^{pr2}$fields
字段被设置为many=True
或被包装为in a ^{这就可以解释为什么Python列表被强制为一个字符串,这也解释了为什么不能解析它,因为Python列表与JSON列表并不完全匹配。在
相关问题 更多 >
编程相关推荐