問題描述
解析的代碼如下:
# 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