2024-06-26 04:37:00 发布
网友
嗨,我正在使用一个JSON编码器,在哪里泡菜、垃圾()的输出很奇怪。输出如下:
"cdecimal Decimal p0 (S'2097369' p1 tp2 Rp3 .",
而它应该是:2097369
2097369
代码片段是:
有人能告诉我出什么问题了吗?我怎样才能得到想要的价值?在
我想这就是你要找的。JSON不支持的类型使用pickle序列化为字符串,并以一种格式存储,以指示它是Python对象。object_hook用于识别该格式,并在^{期间将pickled对象转换回Python对象:
pickle
object_hook
from decimal import Decimal import json import pickle class PythonObjectEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, (dict,list,tuple,str,unicode,int,long,float,bool,type(None))): return json.JSONEncoder.default(self,obj) return {'_python_object_':pickle.dumps(obj)} def as_python_object(dct): if u'_python_object_' in dct: return pickle.loads(dct[u'_python_object_']) return dct obj = {'a':1,'b':'string','c':1.2,'d':Decimal('123.456')} print obj # original object j = json.dumps(obj,cls=PythonObjectEncoder,indent=2) print j # encoded object obj = json.loads(j,object_hook=as_python_object) print obj # decoded object
输出:
我想这就是你要找的。JSON不支持的类型使用期间将pickled对象转换回Python对象:
pickle
序列化为字符串,并以一种格式存储,以指示它是Python对象。object_hook
用于识别该格式,并在^{输出:
^{pr2}$相关问题 更多 >
编程相关推荐