问题描述
解析的代码如下:
# 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