最近在接口測試時遇到一個奇怪的問題,data參數為json格式,運行時總是提示報文格式不對,把data參數放到JSON在線解析里面報文也是正確的。


后來通過打印data找到了問題所在,在python中打印data數據,會自動把雙引號變為單引號,而單引號JSON格式不認,所以提示報文格式錯誤。
可以使用json.dumps(data)方法將數據保持雙引號格式,



接口測試中可以把data數據寫成
r = requests.post(url=url,data=json.dumps(data))形式,也可以寫成r = requests.post(url=url,json=data),兩者都可以,此時再運行接口就成功了。

注:
list,tuple,dict,set都是單引號
L = ['Michael', 100, True]
t = ('Adam', 'Lisa', 'Bart')
d = {'Adam': 95, 'Lisa': 85, 'Bart': 59}
s = set(['A', 'B', 'C'])
Python字典(dict)與json數據格式的區別和聯系
在學習Python的時候,我們學習到,Python3 的標准數據類型有:
數字(Number)
字符串(String)
列表(List)
元組(Tumple)
集合(Set)
字典(Dictionary)
發現字典和json數據格式有點像。接下來比較一下兩者的異同。
- python dict 字符串用單引號,json強制規定雙引號。
- python dict 里可以嵌套tuple, json里只有arrayjson.dumps({1:2}) 的結果是 {“1”:2},而python中的json模塊函數:json.dumps((1,2)) 的結果是[1,2]
- json key name 必須是字符串, python 是hashable, {(1,2):1} 在python里是合法的,因為tuple是hashable type;{[1,2]:1} 在python里TypeError: unhashable “list”
- json: true false null ;python:,True False None
-
Python中提供了json.loads()轉換函數,方便json數據的調用。

