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"
           

  • 相关阅读:
    教你发布Silverlight Bussiness Application(SQL Server 登录,局域网访问,以及使用ArcGIS Server服务需要注意的问题)
    ArcGIS API for Silverlight 使用GeometryService进行河流网格划分(三)
    ArcGIS Server 10.1发布要素服务时遇到的数据库注册问题总结 (二)
    使用ArcGIS API for Silverlight + Visifire绘制地图统计图
    使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示
    报个道
    Cgroups
    docker的文件系统
    go实现http服务
    linux调度器原理
  • 原文地址:https://www.cnblogs.com/lexus/p/1725786.html
Copyright © 2011-2022 走看看