JSON TypeError:期望的字符串或缓冲区

时间:2016-07-28 17:56:17

标签: python json python-2.7

我正在尝试将异常错误存储到json。虽然我很确定我正在存储一个字符串,但它仍然给我一个类型错误。

相关的代码部分:

except ConnectionError as e:
        s = str(e)
        print type(s)
        data = json.loads({'error message': s})
        print "JSON load succeeded" 

回溯:

<type 'str'>

Traceback (most recent call last):
  File "[REDACTED]", line 36, in <module>
    ping(SERVERS)
  File "[REDACTED]", line 29, in ping
    data = json.loads({'error message': s})
  File "C:\Python27\Lib\json\__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\Lib\json\decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TypeError: expected string or buffer

这对我来说非常困惑。我很感激这件事有任何帮助。

1 个答案:

答案 0 :(得分:2)

您正在寻找json.dumps(),而不是json.loads()。试试这个:

    data = json.dumps({'error message': s})

json.dumps(obj):将obj序列化为格式为str的JSON json.loads(s):将s(包含JSON文档的str实例)反序列化为Python对象