【发布时间】:2013-09-07 15:46:54
【问题描述】:
您好,我正在使用 JSON 编码器,其中 pickle.dumps() 给了我奇怪的输出。输出如下:
"cdecimal Decimal p0 (S'2097369' p1 tp2 Rp3 .",
虽然,应该是:2097369
代码sn-p是:
class PythonObjectEncoder(JSONEncoder):
def default(self, obj):
if isinstance(obj, (list, dict, unicode, int, float, str, bool, type(None))):
return JSONEncoder.default(self, obj)
return pickle.dumps(obj)
def as_python_object(dct):
if '_python_object' in dct:
return pickle.loads('')
return dct
谁能告诉我出了什么问题,我怎样才能找回想要的值?
【问题讨论】:
-
你传递给pickle的是什么样的对象?
-
我正在传递一个十进制值。我有一个嵌套的字典,我正在尝试将其序列化为 JSON。为此,我正在使用此功能。早些时候它给出了错误,因为“TypeError: Decimal('2097369') is not JSON serializable”。但是在使用泡菜之后,我得到了一个垃圾值。帮帮我!
-
这不是垃圾值,它是代表
Decimal('2097369')对象的序列化字符串。pickle.loads可以将该字符串转换回Decimal对象。 -
我认为您将
pickle序列化与 JSON 混淆了。pickle与 JSON 没有任何关系。
标签: python json pickle jsonpickle