首页 > 解决方案 > Python reqparse.Add_arguments(Type) 不会在我的 json 请求中给我正确的类型

问题描述

所以我有一个问题。我的 JSON 数据作为完整字符串发送,但它是一个对象。如何通过我的请求发送对象而不是字符串。我的 reqparser 是这样设置的

search_parse = reqparse.RequestParser()
search_parse.add_argument('indexId', required=True, action='append')
search_parse.add_argument("pagination", required=False)
search_parse.add_argument("FilterCriteria", required=True)

我发送的 JSON 请求看起来像这样

{
    "indexId": [
        "testing"
    ],
    "pagination":  {
    "Skip": 1,
    "Take": 4
    },
    "FilterCriteria": {
        "HasPatents": false,
        "IsAuthor": false
    }
}

我的有效载荷在我的控制器中是这样构建的

sovren_payload = {
            "PaginationSettings": pagination,
            "IndexIdsToSearchInto": indexId,
            "FilterCriteria": test
        }

我遇到的问题是FilterCriteria作为字符串在json中发送,所以这就是它应该以JSON格式显示的样子

'FilterCriteria': {'coolguy': True, 'notcool': False}

但我实际上得到的是这个

'FilterCriteria': "{'coolguy': True, 'notcool': False}"

如何在我的 json 请求中摆脱这些烦人的“”括号。我打印我的 sovren_payload 并在那里显示'FileCriteria':“{random data}”

我也意识到我对“分页”变量有同样的问题。但如果我为 FileCriteria 修复它,我也为分页修复它。

任何见解将不胜感激

标签: jsonpython-3.xflaskflask-restplus

解决方案


是的,好吧,经过 3 个小时的挣扎,我发现了,应该输入 type=dict 我觉得很愚蠢。我的主要语言是 C#,我只将 python 用于 AI 的东西,所以它对我来说仍然是新的。希望这对将来像我这样的可怜人有所帮助:D


推荐阅读