zoukankan      html  css  js  c++  java
  • 今日心得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"
           

  • 相关阅读:
    获得H.264视频分辨率的方法
    学习Mathematica
    关于LaTeX公式排版
    关于Jordan标准形
    关于surface gradient
    Jacobi-Anger expansion
    两个1/x类的广义函数
    积分计算相关内容
    关于multi-index
    关于$mathcal{D}(0,1)$上的一个有趣结论
  • 原文地址:https://www.cnblogs.com/lexus/p/1725786.html
Copyright © 2011-2022 走看看