Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PythonMarshmallow:是否有验证嵌套请求JSON的变通方法?_Python_Json_Validation_Marshmallow - Fatal编程技术网

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)