2011-04-30 99 views
1

需要node.js中塔和烧杯:JSON编码会话

读塔会话数据(只是读,不写)当我解码的base64,我离开了我与包含序列化的Python对象的字符串这是一个痛苦的解析node.js

我怎样才能让烧杯序列化为JSON呢?因为node.js处理起来要容易得多。

回答

10

我不得不看里面的烧杯,找到你所说的“Python序列化字符串”是python泡菜。

我不认为它会超过几行来改变它让它使用JSON来存储字典。

这里是针对https://bitbucket.org/bbangert/beaker/src/257f147861c8补丁:

diff -r 257f147861c8 beaker/session.py 
--- a/beaker/session.py Mon Apr 18 11:38:53 2011 -0400 
+++ b/beaker/session.py Sat Apr 30 14:19:12 2011 -0400 
@@ -489,10 +489,10 @@ 
      nonce = b64encode(os.urandom(40))[:8] 
      encrypt_key = crypto.generateCryptoKeys(self.encrypt_key, 
               self.validate_key + nonce, 1) 
-   data = util.pickle.dumps(self.copy(), 2) 
+   data = util.json.dumps(self.copy()) 
      return nonce + b64encode(crypto.aesEncrypt(data, encrypt_key)) 
     else: 
-   data = util.pickle.dumps(self.copy(), 2) 
+   data = util.json.dumps(self.copy()) 
      return b64encode(data) 

    def _decrypt_data(self): 
@@ -504,10 +504,10 @@ 
               self.validate_key + nonce, 1) 
      payload = b64decode(self.cookie[self.key].value[8:]) 
      data = crypto.aesDecrypt(payload, encrypt_key) 
-   return util.pickle.loads(data) 
+   return util.json.loads(data) 
     else: 
      data = b64decode(self.cookie[self.key].value) 
-   return util.pickle.loads(data) 
+   return util.json.loads(data) 

    def save(self, accessed_only=False): 
     """Saves the data for this session to persistent storage""" 
diff -r 257f147861c8 beaker/util.py 
--- a/beaker/util.py Mon Apr 18 11:38:53 2011 -0400 
+++ b/beaker/util.py Sat Apr 30 14:19:12 2011 -0400 
@@ -24,6 +24,11 @@ 
    import pickle 
else: 
    import cPickle as pickle 
+ 
+try: 
+ import json 
+except ImportError: 
+ import simplejson as json 

from beaker.converters import asbool 
from beaker import exceptions 
+3

+1进入源代码,解决问题,推动一个补丁。 – Raynos 2011-04-30 18:37:24

+0

正是我所需要的。 – mikeycgto 2011-04-30 20:14:03