2010-01-29 90 views
1

我想从蟒蛇传递一些数据的JavaScript。我在python一侧使用Django,在javascript一侧使用jQuery。JSON蟒蛇的JavaScript

我在Python端序列化的对象是一个字典。

除了像列表和变量这样的简单对象外,该字典还包含SomeClass的实例。序列化的情况下,我extendeded simplejson.JSONEncode这样的:

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) 

这样,SomeClass的实例出现在JSON具有magicParameter == 'SomeClass'这些实例可以被嵌套在不同deph字典。

现在我想在javascript端重新创建这些实例。

我基本上想哈瓦一个JSON解码器,将所有词典转换与magicParameter == 'SomeClass'到自定义JavaScript使用一个简单的对象工厂对象:

SomeClass = function(rawSomeClass) { 

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

} 

,然后我可以添加方法类似这样的重建原始objects:

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

} 

如何编写解码器,它将扫描JSON对象并执行转换?

回答

0
  1. 评估和演示JSON字符串为对象
  2. 运行通过对象的值,并通过转换器
  3. 与magicParameter鉴定值=“SomeClass的”
  4. 运行这些值分配结果返回到该值最初在结果对象中
+0

如何运行这些值?可以有嵌套字典和列表。 – 2010-01-29 11:22:21

+0

'for(变量在对象中)'是一个简单的答案。或者您可以阅读https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Statements/For...in以获得更多详细信息 – NilColor 2010-01-29 14:36:21

+0

这是一篇关于json在客户端解析的非常好的文章 - http:// code .flickr.com /博客/ 2009/03/18 /建筑 - 快 - 客户端的搜索/ – viksit 2010-02-01 01:47:57