每天写一点,总有一天我这条咸鱼能变得更咸

 

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:\Python27\lib\json\__init__.py", line 310, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\json\decoder.py", line 346, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Python27\lib\json\decoder.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:\Python27\lib\site-packages\simplejson\__init__.py", line 518, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 79, in scan_once
    return _scan_once(string, idx)
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 45, in _scan_once
    _scan_once, object_hook, object_pairs_hook, memo)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 194, in JSONObject
    value, end = scan_once(s, end)
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 70, in _scan_once
    raise JSONDecodeError(errmsg, string, idx)
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 7 (char 6)

  明确的告诉我们是位置为7的那个地方出了问题,我们根据长度去看,发现忘记加引号了,那么加上引号

问题解决完毕