为什么 Python Flask 将 JSON 中的字典列表转换为列表中第一项或其键的字符串?

问题描述 投票:0回答:2

Python 中的 Flask 正在将我的所有列表转换为字符串。这是我的代码:

class OpenAI(Resource):
    # methods go here
    def post(self):
        parser = reqparse.RequestParser()  # initialize

        parser.add_argument('model', type=str, required=True)  # add arguments
        parser.add_argument('conversation', type=list, required=True)
        parser.add_argument('functions', type=list, required=False)
        parser.add_argument('settings', type=dict, required=False)

        args = parser.parse_args()  # parse arguments to dictionary

        print(args)
        

        resp, tokencost = bare_api.Chat.OpenAI(args['model'], args['conversation'], functions=args.get("functions"), settings=args.get("settings"))

        resp["tokencost"] = tokencost
        if resp.get("error"):
            return resp, 400
        else:
            return resp, 200
    
api.add_resource(OpenAI, '/chat/openai')  # '/chat' is our entry point

if __name__ == '__main__':
    app.run()  # run our Flask app

这是我以 JSON 形式发送到端点的内容:

{
    "model": "gpt-3.5-turbo-0613",
    "conversation": [
        {
            "role": "user",
            "content": "ho"
        },
        {
            "role": "assistant",
            "content": "hi"
        }
    ]
}

这就是

parser.parse_args()
给我的:

{'model': 'gpt-3.5-turbo-0613', 'conversation': ['role', 'content'], 'functions': None, 'settings': None}

, 而不是我真正想要的,这是 Python 字典形式的邮递员 JSON。

我该如何解决这个问题?

python json flask flask-restful
2个回答
0
投票

因为您将其指定为

list

parser.add_argument('conversation', type=list, required=True)

尝试:

parser.add_argument('conversation', type=dict, required=True)

0
投票

我想通了!我需要使用

request.json
而不是
flask_restful
中的解析器。

© www.soinside.com 2019 - 2024. All rights reserved.