2016-12-25 3 views
0

Что я делаю неправильно:jsonpickle подкласс OrderedDict не работает

class A(collections.OrderedDict): 
    def __init__(self,*largs,**kwargs): 
     super(A,self).__init__(*largs,**kwargs); 
    def __reduce__(self): 
     return super(A,self).__reduce__() 

dt = collections.OrderedDict([(1,3),(34,2)]) # pickles fine 
d=A([(1,3),(34,2)])       # pickles fine 

js=pickle.dumps([d,dt]) 
print(js) 
temp = pickle.loads(js) 
print(temp) 

# but it does not jsonpickle.decode ???? 
js=jsonpickle.encode(d) 
print(js) 
temp = jsonpickle.decode(js) 
print(temp) 
+0

'' print (jsonpickle.util.has_reduce (d)) '' возвращает '' (False, False) '' почему ?? он имеет сокращение? – Gabriel

ответ

0

Obvisouly есть специальный обработчик, который я должен был зарегистрирован для моего класса:

jsonpickle.handlers.register(A, handlers.OrderedDictReduceHandler)

затем он работает

Смежные вопросы