2010-01-29 10 views
1

Je veux transférer des données de python à javascript. J'utilise Django en python et jQuery en javascript.JSON python à javascript

L'objet que je sérialise du côté python est un dictionnaire.

Outre les objets simples comme les listes et les variables, ce dictionnaire contient des instances de SomeClass. Pour sérialiser ces cas, j'extendeded simplejson.JSONEncode comme ceci:

class HandleSomeClass(simplejson.JSONEncoder): 
    """ simplejson.JSONEncoder extension: handle SomeClass """ 
    def default(self, obj): 
     if isinstance(obj, SomeClass): 
      readyToSerialize = do_something(obj) 
      readyToSerialize.magicParameter = 'SomeClass' 
      return readyToSerialize 
     return simplejson.JSONEncoder.default(self, obj) 

De cette façon, les instances de someClass apparaissent dans les dictionnaires JSON ayant magicParameter == 'SomeClass' Ces instances peuvent être imbriquées à différents deph.

Maintenant je voudrais recréer ces instances du côté javascript.

Je essentiellement voudrais Hava un décodeur JSON, qui convertira tous les dictionnaires avec magicParameter == 'SomeClass' à la coutume des objets JavaScript à l'aide d'une simple usine d'objet:

SomeClass = function(rawSomeClass) { 

    jQuery.extend(this, rawSomeClass) // jQuery extend merges the newly-created object and the rawSomeClass object 

} 

et je pourrais ajouter des méthodes comme celui-ci pour recréer l'original Objets:

SomeClass.prototype.get = function(arguments) { 
    // function body 

} 

Comment écrire un décodeur qui va scanner l'objet JSON et effectuer la conversion?

Répondre

0
  1. Eval la chaîne JSON dans un objet
  2. parcourir les valeurs de l'objet et identifier les valeurs avec magicParameter = « SomeClass »
  3. Run ces valeurs par l'intermédiaire d'un convertisseur
  4. affecter le résultat à l'endroit où la valeur était initialement dans l'objet résultat
+0

Comment parcourir les valeurs? Il peut y avoir des dictionnaires imbriqués et des listes. –

+0

'for (variable dans l'objet)' est une réponse simple. Ou vous pouvez lire https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Statements/For...in pour plus de détails – NilColor

+0

Ceci est un très bon article sur l'analyse JSON sur le côté client - http: // code .flickr.com/blog/2009/03/18/building-fast-client-side-recherches / – viksit