这取决于你想要使用它。如果你只是试图保存它,你应该使用
pickle(或
cPickle,这是更快,如果使用CPython,因为你可能是)。
>>> import cPickle
>>> cPickle.dumps({'foo': 'bar'})
"(dp1\nS'foo'\np2\nS'bar'\np3\ns."
>>> cPickle.loads(_)
{'foo': 'bar'}
然而,如果你想要它是可读的,你可以使用json
>>> import json
>>> json.dumps({'foo': 'bar'})
'{"foo": "bar"}'
>>> json.loads(_)
{u'foo': u'bar'}
>>> import simplejson
>>> simplejson.dumps({'foo': 'bar'})
'{"foo": "bar"}'
>>> simplejson.loads(_)
{'foo': 'bar'}
json和simplejson在他们将支持什么是非常有限的。 cPickle可以用于对象(如果它不能自动工作,类可以定义__getstate__来精确指定它应该如何被选择)。
>>> cPickle.dumps(object())
'ccopy_reg\n_reconstructor\np1\n(c__builtin__\nobject\np2\ng2\nNtRp3\n.'
>>> json.dumps(object())
Traceback (most recent call last):
...
TypeError: is not JSON serializable
>>> simplejson.dumps(object())
Traceback (most recent call last):
...
TypeError: is not JSON serializable