PythonMarshmallow:是否有验证嵌套请求JSON的变通方法?
我想用PythonMarshmallow:是否有验证嵌套请求JSON的变通方法?,python,json,validation,marshmallow,Python,Json,Validation,Marshmallow,我想用marshmallow验证嵌套的请求JSON,我几乎按照它的文档来验证我的请求JSON数据。经过几次尝试,我认为使用棉花糖验证复杂的JSON数据是正确的方法。但是,我从棉花糖中得到一个验证错误,如下所示: 更新的错误消息 > PS C:\Users\jyson\immunomatch_api> python .\json_validation.py > Traceback (most recent call last): File ".\json_validation
marshmallow
验证嵌套的请求JSON,我几乎按照它的文档来验证我的请求JSON数据。经过几次尝试,我认为使用棉花糖验证复杂的JSON数据是正确的方法。但是,我从棉花糖中得到一个验证错误,如下所示:
更新的错误消息
> PS C:\Users\jyson\immunomatch_api> python .\json_validation.py
> Traceback (most recent call last): File ".\json_validation.py", line
> 58, in <module>
> app = schema.load(app_data) File "C:\Users\jyson\AppData\Local\Programs\Python\Python37\lib\site-packages\marshmallow\schema.py",
> line 723, in load
> data, many=many, partial=partial, unknown=unknown, postprocess=True File
> "C:\Users\jyson\AppData\Local\Programs\Python\Python37\lib\site-packages\marshmallow\schema.py",
> line 904, in _do_load
> raise exc marshmallow.exceptions.ValidationError: {'_schema': ['Invalid input type.']}
为什么我有上述错误?验证嵌套JSON的正确方法是什么?为什么我有未知字段错误?有什么可能的想法来消除上面的错误吗?谢谢错误清楚地提到了这个问题
marshmallow.exceptions.ValidationError: {'OM10': ['Unknown field.'], 'CRP': ['Unknown field.'], 'IL10': ['Unknown field.'], 'PCT4': ['Unknown field.']}
Marshmallow的模式不理解该字段,因为您尚未将其声明到模式中,默认情况下,如果Marshmallow发现未知字段,它将引发错误
一个简单的解决方法是在查看代码时排除它们,因为您似乎无论如何都不需要它们
我建议在实例化时将unknown
参数作为EXCLUDE
传递
from marshmallow import EXCLUDE
schema = AppSchema(unknown=EXCLUDE)
更多信息可在此处找到-感谢您的提醒。但在我尝试您的输入后,出现了以下错误:TypeError:make_app()获得了一个意外的关键字参数“many”
,但我通过添加**kwargs修复了该错误。现在我有了这样一个:TypeError:\uuuu init\uuuu()缺少1个必需的位置参数:“features”
;还有什么想法吗?我在上面粘贴了新的错误消息我有一个位置参数,因为我必须显式定义一个对象,如PCT4
,IL10
,而不是像features
这样的抽象对象。我怎样才能让它工作?我更新了上面的错误消息。感谢这不起作用,因为json中没有功能。您需要定义与json中相同的结构。我建议您更改AppSchema
并在其中添加PCT4
`CRP``等作为嵌套字段验证后,如何将app=schema.load(app_data)
序列化回json字符串,如json.dumps(app)
?我会接受你的解决方案。谢谢,这就是方法
from marshmallow import EXCLUDE
schema = AppSchema(unknown=EXCLUDE)