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/

posted @ 2020-01-03 16:11  wswang  阅读(1825)  评论(0编辑  收藏  举报