Reputation: 64
I'm trying to store an exception error to json. Even though I'm pretty sure I'm storing a string, it's still giving me a typeerror.
Relevant section of code:
except ConnectionError as e:
s = str(e)
print type(s)
data = json.loads({'error message': s})
print "JSON load succeeded"
Traceback:
<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
This is quite baffling to me. I'd appreciate any help with this matter.
Upvotes: 1
Views: 11151
Reputation: 168636
You are looking for json.dumps()
, not json.loads()
. Try this:
data = json.dumps({'error message': s})
json.dumps(obj)
: Serialize obj
to a JSON formatted str
json.loads(s)
: Deserialize s (a str
instance containing a JSON document) to a Python object
Upvotes: 2