美文网首页
python学习笔记-tip52(io编程--JSON)

python学习笔记-tip52(io编程--JSON)

作者: 黑键手记 | 来源:发表于2018-10-19 18:19 被阅读4次

    引言

    如题,JSON 数据格式是当前主流的交互格式,今天就给大家讲解一下 python 怎么把数据转化成 Json 格式,然后 Json 格式的字符串怎么转换成 python 用到的格式。
    其实 python 内置的 json 模块很好的解决了这些问题

    json模块

    我们来看一个示例,看下怎么将一个 dict 转成 json 格式

    import json
    d=dict(name='xiaoming',age=20,score=10)
    j=json.dumps(d)
    print(j)
    
    实例展示:

    我们发现,的确输出了

      {"name": "xiaoming", "age": 20, "score": 10}
    

    json格式的结果
    json.dumps()方法为我们返回了一个json格式的str
    和上一节讲解序列化一样,json.dump()方法能直接将json格式的str存入到file,这里就不过多展示了

    而要把 json 的str 转化成 dict

    那么其实使用loads()或者load()方法就可以了,同样也和反序列化是一样的,我们来看一下案例


    loads()方法:把json字符转换成dict
    load()方法:先加载文件,将文件中的字符串转换成dict
    无疑,在这里,使用loads()方法是很合适的


    上面,我们是使用 dict 和 json 完成的相互转化,而有的时候,我们还会用一个类实现和 json 的转换,但是,在用类和json转换时,需要提供一个转换方法才可以,我们来详细看一下

    类 与 json 的转化

    我们先看一个例子

    本来满怀期待的等待,但是却爆出了这么多错,不过别着急

    还记得上文我说的吗?
    需要给类提供一个转换方法才行,那么我们给他提供一个


    这样就完美了,那么我们现在加的这个
    default=转换方法名
    有什么作用呢?
    其实,它的作用就是让 json 模块知道我可以通过这个方法将这个类转化成一个可以转换成 json 的对象,然后就可以继续转换了。

    否则,json 模块就认为这个类不是能够转换成 json 数据格式的对象,直接就报类型错误了

    不过,这样写是不是很累,我每次想用一个类转成json,还得单独为他提供转化方法。。。

    当然了,python是一个聪明的语言,他不会让你白白受苦的,我们可以下面这个方法让所有的类都能够轻松转化:

    default=lambda obj: obj.__dict__
    

    这句代码啥意思呢?
    他的意思就是用一个基本上万能的转化方法,实现 “类转成dict”
    因为基本上一个实例都有一个__dict__属性,他就是一个dict,用来存储实例变量,但是也有少数例外,比如定义了__slots__的class.

    我们来演示一下:



    这样就方便很多嘛

    ok,说完了把一个类转换成json,下面说下怎么把json转成一个类

    当然也是用到loads()
    loads() 方法 首先会转换成一个 dict 对象,然后用我们传递的另一个转换函数来吧 dict 转成 Student

    转换函数怎么传?

     object_hook=转换函数名
    

    我们来演示一下


    总结

    转换成json在以后用的很多,请多多练习,加油!!

    相关文章

      网友评论

          本文标题:python学习笔记-tip52(io编程--JSON)

          本文链接:https://www.haomeiwen.com/subject/zjluzftx.html