zoukankan      html  css  js  c++  java
  • Flask中解析Json参数失败

    问题描述

    解析的代码如下:

    # data = request.get_json()
    # 开始使用的get_json()
    data = request.get_data(parse_form_data=False)
    data = json.loads(data, encoding='utf-8')
    

    postman模拟请求的参数如下:

    {
        ‘sub‘: [‘美国总统‘, ‘日本首相‘],
        ‘obj‘: [‘制裁日本’, ‘韩国’],
        ‘time‘: [’2018-05-13 00:00:00’, ‘2018-05-13 00:00:00‘],
        ‘location‘: [‘华盛顿‘, ’东京‘],
        ‘trigger‘: [‘宣布‘, ‘谴责’]
    }
    

    尝试

    1

    起初使用的是request.get_json(), 提示 ValueError: No JSON object could be decoded ,很奇怪,因为觉得传递的就是JSON,怎么还会有这种问题;

    后改为了get_data,再使用 json.loads ,结果还是有问题;

    ValueError: Expecting property name: line 1 column 2 (char 1)
    

    然后网上查了一下,然后说可能是编码问题,加各种尝试依然不行……

    2

    结果在这个网页看到了一句话

    由于 json 语法规定 数组或对象之中的字符串必须使用双引号,不能使用单引号 (官网上有一段描述是 “A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes” )

    emmm,释然了,参数错了;要把单引号改成双引号,大意了……也就是说虽然Python中单双引号OK,但JSON的话,就要双引号。

    {
        "sub": ["美国总统","日本首相"],
        "obj": ["制裁日本", "韩国"],
        "time": ["2018-05-13 00:00:00", "2018-05-13 00:00:00"],
        "location": ["华盛顿", "东京"],
        "trigger": ["宣布", "谴责"]
    }
    

    参考

    https://blog.csdn.net/HeatDeath/article/details/79370945

    https://blog.51cto.com/pcliuyang/1537111

    https://jiap.me/tutorial/flask-requests-with-params-2/

  • 相关阅读:
    spring学习10-AOP
    spring学习9-代理模式
    spring学习6-bean的自动装配
    PyQT5使用心得
    Python 时间戳和日期相互转换
    requests模块的入门使用
    Celery异步任务
    MySQL和python交互
    MySQL高级
    MySQL中select的使用
  • 原文地址:https://www.cnblogs.com/wswang/p/12145456.html
Copyright © 2011-2022 走看看