今日心得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"
       

原文地址:https://www.cnblogs.com/lexus/p/1725786.html