我有一个通过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 (无需更改字典结构)?
谢谢。
发布于 2011-05-24 00:22:57
使用Python的“pickle”模块自己序列化和反序列化“test”。
cPickle.dumps(test)是有效的。在你使用的电线的另一端
cPickle.loads(received_test_pickle)在XMLRPC调用之前/之后,可能需要对pickle进行base-64编码/解码。
但也要研究一下PyRo
http://pyro.sourceforge.net/
https://stackoverflow.com/questions/6099947
复制相似问题