将列表序列化保存到cookie中并通过js反序列化得到数组解决方案

2019-06-22 14:58:53阅读 244评论 0

需求点

将数据放入列表,进行序列化后存放cookie,前端通过js调取cookie可反序列化成数组

问题

python的序列化主要有json,pickel,尝试用json.loads或pickle.loads序列化成功后,保存到cookie,前端js通过JSON.parse无法解析成数组并报错

原因

cookie放入的值,必须是通过url编码后的数据,而我们这里使用json或pickle编码,能存入,但不可被解析

解决办法

找到一个能进行url编码的函数,这里找到一个urlencode的函数。但该函数只能编码字典,所以我们要将列表构造成字典,编码完成后再剔除构造字典所新增的冗余部分,如下

    from urllib.parse import urlencode  
    def dumps_to_cookie(list):  
        obj={'sub':list}  
        return urlencode(obj).replace('sub=','')

将列表传入函数,就可以得到该列表的url编码

注意:该方法仅可编码没有中文的列表

还没有评论,来说两句吧