2024-04-18 06:49:41 发布
网友
这取决于你想用它做什么。如果您只是想保存它,那么应该使用^{}(或者,如果您使用的是CPython 2.x,^{},速度更快)。
>>> import pickle >>> pickle.dumps({'foo': 'bar'}) b'\x80\x03}q\x00X\x03\x00\x00\x00fooq\x01X\x03\x00\x00\x00barq\x02s.' >>> pickle.loads(_) {'foo': 'bar'}
如果希望可读,可以使用^{}:
>>> import json >>> json.dumps({'foo': 'bar'}) '{"foo": "bar"}' >>> json.loads(_) {'foo': 'bar'}
但是,json在支持什么方面非常有限,而pickle可以用于任意对象(如果它不能自动工作,则类可以定义__getstate__,以精确指定应该如何对其进行pickle)。
json
pickle
__getstate__
>>> pickle.dumps(object()) b'\x80\x03cbuiltins\nobject\nq\x00)\x81q\x01.' >>> json.dumps(object()) Traceback (most recent call last): ... TypeError: <object object at 0x7fa0348230c0> is not JSON serializable
如果完全信任字符串而不关心python injection attacks,那么这是非常简单的解决方案:
d = { 'method' : "eval", 'safe' : False, 'guarantees' : None } s = str(d) d2 = eval(s) for k in d2: print k+"="+d2[k]
如果你更注重安全,那么^{}是一个更好的选择。
使用Python的json模块,如果没有Python 2.6或更高版本,则使用simplejson。
这取决于你想用它做什么。如果您只是想保存它,那么应该使用^{} (或者,如果您使用的是CPython 2.x,^{} ,速度更快)。
如果希望可读,可以使用^{} :
但是,
json
在支持什么方面非常有限,而pickle
可以用于任意对象(如果它不能自动工作,则类可以定义__getstate__
,以精确指定应该如何对其进行pickle)。如果完全信任字符串而不关心python injection attacks,那么这是非常简单的解决方案:
如果你更注重安全,那么^{} 是一个更好的选择。
使用Python的json模块,如果没有Python 2.6或更高版本,则使用simplejson。
相关问题 更多 >
编程相关推荐