XML-RPC - 无法序列化递归字典
我有一个简单的例子,想通过xml-rpc发送一个字典:
class CTest(object):
def __init__(self):
self.node1 = {'data':'zek', 'parent':{}, 'children':[]}
self.node2 = {'data':'bill', 'parent':{}, 'children':[]}
self.node1['children'].append(self.node2)
self.node2['parent'] = self.node1
def getNode(self):
return self.node1
我有两个字典:node2是node1的孩子,同时node2也有一个指向node1的父变量。所以这是一个递归字典。当我尝试通过XML-RPC发送node1时,出现了这个异常:
#Command to execute xml-rpc dump method for serialization
test = CTest()
xmlrpclib.dumps((test,), 'Node Object')
#Exception
raise TypeError, "cannot marshal recursive dictionaries"
有没有可能在不改变字典结构的情况下,通过XML-RPC发送node1?
谢谢。
1 个回答
5
自己动手用Python的'pickle'模块来序列化和反序列化'test'。
cPickle.dumps(test)
这样是可以工作的。在网络的另一端,你可以使用
cPickle.loads(received_test_pickle)
在进行XMLRPC调用之前或之后,可能需要对pickle进行base-64编码或解码。
另外,也可以看看PyRo