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"
           

  • 相关阅读:
    win7网络共享原来如此简单,WiFi共享精灵开启半天都弱爆了!
    JQUERY UI Datepicker Demo
    Official online document, install svn server in centOS
    JAVE not work in linux
    AMR 转mp3 失败
    XD, XR, DR 股票
    Linux 下MySql 重置密码
    Difinition Of Done
    Apache, Tomcat, JK Configuration Example
    Linux 安装tomcat
  • 原文地址:https://www.cnblogs.com/lexus/p/1725786.html
Copyright © 2011-2022 走看看