今天在使用python中的json轉換碰到一個問題:
接收一個post的json字串:
s={"username":"admin","password":"password","tenantid":" "}
使用python自帶的json庫
import json >>> a=json.loads(s) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/json/__init__.py", line 326, in loads return _default_decoder.decode(s) File "/usr/lib/python2.7/json/decoder.py", line 366, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) TypeError: expected string or buffer >>>
錯!
百思不得其解。經過調試,最終發現,python中預設使用單引號表示字串"'"
所以當,用字串符值以後,python會把雙引號轉換為單引號
>>> s={"username" :"admin","password":"password","tenantid":""}
>>> print s
{'username': 'admin', 'password': 'password', 'tenantid': ''}
而json是不支援單引號的。
可以用下面的方法轉換
json_string=json.dumps(s)
python_obj=json.loads(json_string)
python_obj=json.loads(json_string)