zoukankan      html  css  js  c++  java
  • 序列化json模块

    1.用json模块来进行序列化和反序列化

     注意:用json序列化的数据类型得到的文件后缀名必须是json。因为如果不是json后缀,别人也不知道这是用json序列化的文件。

    序列化:json.dumps(需要转换成字符串的对象),将数据类型转换成字符串,不会存到文件里。

    import json
    
    dicts = {
        'roles':[
            {'role':'saber','name':'dapeng','life':50},
            {'role':'shengqi','name':'archer','life':60}
        ]
    }
    
    f = open('111.json','w')
    
    d = json.dumps(dicts)
    
    print(d,type(d))
    
    # {"roles": [{"role": "saber", "name": "dapeng", "life": 50}, {"role": "shengqi", "name": "archer", "life": 60}]} <class 'str'>
    

    序列化:json.dump(obj,文件)  将数据类型转换城字符串的同时也存入到文件中。

    import json
    
    dicts = {
        'roles':[
            {'role':'saber','name':'dapeng','life':50},
            {'role':'shengqi','name':'archer','life':60}
        ]
    }
    
    f = open('111.json','w')
    
    d = json.dump(dicts,f)
    
    print(d,type(d))
    

    2反序列化 json.loads(字符串对象)  

    dicts = {
        'roles':[
            {'role':'saber','name':'dapeng','life':50},
            {'role':'shengqi','name':'archer','life':60}
        ]
    }
    import json
    
    
    d = json.dumps(dicts)
    print(json.loads(d))
    

    json.load(文件对象) 将文件中的字符串转换成字典等类型。

    import json
    
    f = open('111.json','r')
    
    print(json.load(f))
    

      

    3.json.dumps()和json.loads() 只是在内存中,不存储到硬盘里,存在的意义是什么?

    ①·把你的内存数据,通过网络,发送给其他人进行共享。网络共享只能通过字符串格式发送,所以要用json.dumps转换成字符串格式。

    ②·定义了不同语言之间的交互规则。

      1.纯文本 缺点:不能共享复杂的数据类型,如嵌套。

      2.xml       缺点:占空间大(如<year>2018</year>,而字典里可以用'year':2018,更省空间)  

      3.json     简单,可读性好,占用内存较小

    4.json.dump()  dump多次可以。

    import json
    
    f = open('112.json','w')
    a = [1,2,3,4,5]
    b = {1:2,2:3,3:4,4:5,5:6}
    json.dump(a,f)
    json.dump(b,f)
    

    那么load多次可以吗?

    dump多次的文件,不可以load一次或者多次。

    import json
    
    f = open('112.json','r')
    
    json.load(f)
    

      

      

  • 相关阅读:
    ListView Fragment 设置 setLayoutAnimation() 无效 Binary
    android dialog activity touch outside Binary
    Android EditText 监听软键盘删除键 Binary
    Log4net简介
    Js Cookies
    软件版本定义
    NHibernate配置文件和映射文件的详解
    MS SQLSERVER 一次性删除所有表以及视图等等
    SQL Server 2005调整兼容级别,存储过程:sp_dbcmptlevel
    jquery 屏蔽右击 复制
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8862071.html
Copyright © 2011-2022 走看看