• 今日心得py json serialization


    今天主要将精力放在调试json上,python下的json的库很大,也看了一些文章,主要有这么一些库,demjson,simplejson,我之前比较过这两个,所以初步在这两个上用,后来发现生成的
    序列化后的中文还是不是中文而是类似/uxx343,\x3454等,这样不直观,可能也能用,,因为只想它序列化和反序化的操作是等价的就可以了,
    不过我还是想我看起来更直观一些,所以想找能直接看就是中文的,之后也测了cjson,
    在django中有用到这个,也不行,后来还发现python2.6内置了一个,据说就是simplejson,
    反正也是不行,最后是在sf上找一个名为jsonpy的,它内部有两个实现一个是json.py另一个是minjson.py,要用json.py这个,就能实现中文了,网上有一些文章讲simplejson支持中文,
    可是我没试成功。
    另外在进行json序列化的时候,遇到的障碍是传入的对象是继承自dict,list的自定类,这样序列化就有问题,因此我只好再转换回list,dict,这样就差不多没问题了,不过还得注意,dict里的
    k,v也必须是str,float,None,等简单类型,我遇到的问题是,我使用了一些库,所以存成的值,
    有一些是unicode类型,因此要小心的使用print type(v)来进行查看,
    后来想了一个办法
    def checku(obj):
        if isinstance(obj,unicode):
            return obj.encode("utf8")
        return obj
    _=checku
    _(v)

    另外学到的一招是
    """
    Select a JSON library from any of several known libraries.
    """
     
    try:
        import cjson
        encode = cjson.encode
        decode = cjson.decode
    except ImportError:
        try:
            import simplejson
            encode = simplejson.dumps
            decode = simplejson.loads
        except ImportError:
            try:
                import demjson
                encode = demjson.encode
                decode = demjson.decode
            except ImportError:
                raise ImportError, "could not load one of: cjson, simplejson, demjson"
           

  • 相关阅读:
    python笔记-datetime-logging
    python笔记-json-base64-hashlib
    python笔记-redis数据库
    python笔记-mysql命令使用示例(使用pymysql执行)
    python笔记-python程序中操作mysql数据库
    python笔记-mysql约束条件与表关系
    python笔记-mysql查询
    python笔记-mysql基本命令
    Vue移动端项目模板h5
    基于环信SDK的IM即时通讯填坑之路(vue)
  • 原文地址:https://www.cnblogs.com/lexus/p/1725786.html
Copyright © 2020-2023  润新知