def serialize( self, as_type = str ): result = {} for path, obj in self.iteritems(): result[path] = _marshal( obj, type(obj) ) if as_type == type(result): return result result = json.dumps( result, ensure_ascii=False ) if as_type == type(result): return result return as_type( result.encode( 'utf8' ) )
def serialize(self, as_type=str): result = {} for path, obj in self.iteritems(): result[path] = _marshal(obj, type(obj)) if as_type == type(result): return result result = json.dumps(result, ensure_ascii=False) if as_type == type(result): return result return as_type(result.encode('utf8'))
item = Object( a=int ) p = Packet(Root) p.deserialize( ''' { "all/2/some/2": { "a": 12345 }, "all/@1/some/3": { "a": 54321 }, "all/2/some": { "1": { "a": 98765 } } } ''') for k,v in p[Root.all.item].iteritems(): print k, v._key_, v._url_(), _marshal( v, type(v) ) for k,v in p[Root.all.item.some.item].iteritems(): print k, v._key_, v._url_(), _marshal( v, type(v) ) p['all/3'] = Root.all.item() p[Root.all.item.some.item][(3,)] = { '2': Root.all.item.some.item( a=56789 ) } p['all/@1'] = Root.all.item() p[Root.all.item][1] = p['all/@1'] print p.serialize()
class item(Node): class some(Container): item = Object(a=int) p = Packet(Root) p.deserialize(''' { "all/2/some/2": { "a": 12345 }, "all/@1/some/3": { "a": 54321 }, "all/2/some": { "1": { "a": 98765 } } } ''') for k, v in p[Root.all.item].iteritems(): print k, v._key_, v._url_(), _marshal(v, type(v)) for k, v in p[Root.all.item.some.item].iteritems(): print k, v._key_, v._url_(), _marshal(v, type(v)) p['all/3'] = Root.all.item() p[Root.all.item.some.item][(3, )] = {'2': Root.all.item.some.item(a=56789)} p['all/@1'] = Root.all.item() p[Root.all.item][1] = p['all/@1'] print p.serialize()