今天下午來到,運行了curl -i url:port ,然后返回的信息,用json.loads()解析,出報一下錯誤:
Traceback (most recent call last):
File "test1.py", line 12, in <module>
decodejson = json.loads(str1)
File "/usr/lib/python3.4/json/__init__.py", line 318, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.4/json/decoder.py", line 343, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.4/json/decoder.py", line 361, in raw_decode
raise ValueError(errmsg("Expecting value", s, err.value)) from None
ValueError: Expecting value: line 1 column 1 (char 0)
測試1:原來以為是python不能解析json的null,試着把json的null換成其他的字符串,發現還是報這個錯。。。。后來查了一下 ,loads()可以將json的null轉換成None的。。沒毛病!
測試2:后來懷疑,運維傳過來的字符串不是json格式。使用eval()函數判別返回數據類型,判斷方式:
try:
eval(jsonStr)
except Exception,e :
print "不是json字符串"
發現,懷疑有理!,果然不是json,一步一步往上走;
測試3:既然不是json,那么要么是后台數據有問題,要么我調取的命令不對。。和后台的人一起測試,發現:果然是curl命令的問題。。。。。
curl -i XXXXX 返回的是整個http的內容。。。包括請求行。請求體。請求頭。。。
而curl XXXX 返回的則只有http請求體。。。
總結一下:1、寫代碼,一定要寫個邏輯判斷,或者try。。catch。。 要不然bug真的很難找
2、有時間看一下curl,功能強大的一筆啊!
