[Python-de] XML-RPC Serialisierung beeinflußen
Diez B. Roggisch
deets at web.de
So Jun 12 20:52:03 CEST 2011
On Jun 12, 2011, at 8:40 PM, Andreas Jung wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Seltsame Frage....bei XML-RPC werden immer noch Methoden
> mit einer festen Signatur aufgerufen und der Client muss die
> Parameter analog call-by-value übergeben. Wieso willst Du also hier
> ein Objekt reinstecken...sorry, das macht keinen Sinn im Kontext
> von XML-RPC.
Macht es sehr wohl, wenn man die Frage wirklich gelesen haette. Plus die Doku.
Florian ist auf der Suche nach einer customisierten Serialisierung/De-Serialisierung von Objektzustaenden. Da geht es nicht um irgendwelche Methodenaufrufe von durch die Gegend gereichten Objektreferenzen...
Leider scheint es nicht moeglich zu sein mittels zB des Pickle-Protokolls "dazwischenzugraetschen".
@Florian
Unter Umstaenden koennte dir JSON hier helfen. Das built-in-json erlaubt naemlich sowas. Du muesstest fuer deine entsprechenden Typen eine Serialisierung progarmmieren, zB indem du auf eine Methode wie __json__ zurueckgreifst, die dann zB so aussieht:
class Foo(object):
def __json__(self):
res = {
some_property : self.some_property
}
res.update(self.__dict__)
return res
Dann musst du in jeder XMLRPC-Methode/Funktion den Rueckgabewert "jsonifizieren". Das kann man zB durch einen Dekorator vereinfachen, oder gar einer Metaklasse.
Der Vorteil des Ganzen: JSON selbst regelt schon den rekursiven Abstieg in die ueblichen Typen.
Achtung: du musst die speziellen Objekte von XMLRPC (DateTime & Binary) natuerlich ebenfalls behandeln!
Diez
Mehr Informationen über die Mailingliste python-de