• 【Python】Json序列化和反序列化模块dumps、loads、dump、load函数介绍


    1、json.dumps()

             json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数。

    转换案例:

     1 import json
     2  
     3 name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'} 
     4 
     5 jsObj = json.dumps(name_emb)    
     6 
     7 print(name_emb)
     8 print(jsObj)
     9 
    10 print(type(name_emb))
    11 print(type(jsObj))
    json.dumps()用于将dict类型的数据转成str
    1     {'a': '1111', 'c': '3333', 'b': '2222', 'd': '4444'}  
    2     {"a": "1111", "c": "3333", "b": "2222", "d": "4444"}  
    3     <type 'dict'>  
    4     <type 'str'>  
    运行结果

    若在数据写入json文件时,没有转格式,报错如下

        import json    
            
        name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}    
                    
        emb_filename = ('/home/cqh/faceData/emb_json.json')    
            
        # jsObj = json.dumps(name_emb)      
            
        with open(emb_filename, "w") as f:    
            f.write(name_emb)    
            f.close()    
    未转换时候的错误示例

     2、json.loads()

       json.loads()用于将str类型的数据转成dict

     1 import json  
     2    
     3 name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}   
     4   
     5 jsDumps = json.dumps(name_emb)      
     6   
     7 jsLoads = json.loads(jsDumps)   
     8   
     9 print(name_emb)  
    10 print(jsDumps)  
    11 print(jsLoads)  
    12   
    13 print(type(name_emb))  
    14 print(type(jsDumps))  
    15 print(type(jsLoads))     
    json.loads()用于将str类型的数据转成dict
        {'a': '1111', 'c': '3333', 'b': '2222', 'd': '4444'}  
        {"a": "1111", "c": "3333", "b": "2222", "d": "4444"}  
        {u'a': u'1111', u'c': u'3333', u'b': u'2222', u'd': u'4444'}  
        <type 'dict'>  
        <type 'str'>  
        <type 'dict'>  
    
    #注:'a'变成了u'a'是因为发生了类型转换,str会转换成unicode
    运行结果如下:

    注:'a'变成了u'a'是因为发生了类型转换,str会转换成unicode

    3、json.dump()

      json.dump()用于将dict类型的数据转成str,并写入到json文件中。下面两种方法都可以将数据写入json文件

     1     import json    
     2         
     3     name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}    
     4                 
     5     emb_filename = ('/home/cqh/faceData/emb_json.json')    
     6       
     7     # solution 1  
     8     jsObj = json.dumps(name_emb)      
     9     with open(emb_filename, "w") as f:    
    10         f.write(jsObj)    
    11         f.close()    
    12           
    13     # solution 2     
    14     json.dump(name_emb, open(emb_filename, "w"))  
    json.dump()用于将dict类型的数据转成str,并写入到json文件中。

     4、json.load()

     json.load()用于从json文件中读取数据。

     1     import json    
     2       
     3     emb_filename = ('/home/cqh/faceData/emb_json.json')    
     4       
     5     jsObj = json.load(open(emb_filename))      
     6       
     7     print(jsObj)  
     8     print(type(jsObj))  
     9       
    10     for key in jsObj.keys():  
    11         print('key: %s   value: %s' % (key,jsObj.get(key)))  
    json.load()用于从json文件中读取数据。
    1     {u'a': u'1111', u'c': u'3333', u'b': u'2222', u'd': u'4444'}  
    2     <type 'dict'>  
    3     key: a   value: 1111  
    4     key: c   value: 3333  
    5     key: b   value: 2222  
    6     key: d   value: 4444  
    结果
  • 相关阅读:
    python脚本 – 删除指定天数前的文件
    java 获取屏幕的分辩率
    解决Multi input/output stream coders are not yet supported(org.apache.commons.compress)
    解决tomcat at org.apache.tomcat.util.buf.CharChunk.append(CharChunk.java:355)
    org.quartz.jobStore.misfireThreshold = 60000
    python list 自定义排序
    利用pycron在windows上实现cron定时任务
    [Selenium+Java] Scroll UP or Down a page in Selenium Webdriver
    Python获取硬件信息(硬盘序列号,CPU序列号)
    ChromeDriver自动更新、FirefoxDriver自动更新、InternetExplorerDriver自动更新(Java+Python)
  • 原文地址:https://www.cnblogs.com/hellangels333/p/8551483.html
Copyright © 2020-2023  润新知