每天写一点,总有一天我这条咸鱼能变得更咸
python中对于字符串转json格式有专门的json库可以操作
#!/usr/bin/env python # -*- coding: utf-8 -*- # @File : test4.py # @Author: gaojian # @Date : 2017/12/20 # @Desc : import json a='{"aa":"aaa","vvv":22}' print type(a) b = json.loads(a) print type(b)
输出结果:
这种情况是针对于字符串的格式符合json格式的,但很多时候,我们读取的字符串并不一定符合json格式,那这时候用json.loads来转换则会报错,字符串很短的话我们可能会立马发现问题,但字符串很长很长的时候,那时候去找问题那就是一个灾难了,例如:
import json,simplejson a="{'aa':aaa,'vvv':22}" b = json.loads(a) print type(b)
这时候转换的时候只是告诉我出错了
提示信息:
Traceback (most recent call last): File "D:/test_py/test4.py", line 11, in <module> b = json.loads(a) File "C:Python27libjson\__init__.py", line 310, in loads return _default_decoder.decode(s) File "C:Python27libjsondecoder.py", line 346, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "C:Python27libjsondecoder.py", line 364, in raw_decode raise ValueError("No JSON object could be decoded") ValueError: No JSON object could be decoded
但并没有告诉我是哪里错了,这时候就很难发现问题了吗,但是python 有个专门的库simplejson可以解决这个问题,他会给你定位到出错的位置,从而让你解决问题,如:
import json,simplejson a='{"aa":aaa,"vvv":22}' b = simplejson.loads(a) print type(b)
错误信息:
Traceback (most recent call last): File "D:/test_py/test4.py", line 11, in <module> b = simplejson.loads(a) File "C:Python27libsite-packagessimplejson\__init__.py", line 518, in loads return _default_decoder.decode(s) File "C:Python27libsite-packagessimplejsondecoder.py", line 370, in decode obj, end = self.raw_decode(s) File "C:Python27libsite-packagessimplejsondecoder.py", line 400, in raw_decode return self.scan_once(s, idx=_w(s, idx).end()) File "C:Python27libsite-packagessimplejsonscanner.py", line 79, in scan_once return _scan_once(string, idx) File "C:Python27libsite-packagessimplejsonscanner.py", line 45, in _scan_once _scan_once, object_hook, object_pairs_hook, memo) File "C:Python27libsite-packagessimplejsondecoder.py", line 194, in JSONObject value, end = scan_once(s, end) File "C:Python27libsite-packagessimplejsonscanner.py", line 70, in _scan_once raise JSONDecodeError(errmsg, string, idx) simplejson.errors.JSONDecodeError: Expecting value: line 1 column 7 (char 6)
明确的告诉我们是位置为7的那个地方出了问题,我们根据长度去看,发现忘记加引号了,那么加上引号
问题解决完毕