zoukankan      html  css  js  c++  java
  • Json模块dumps、loads、dump、load函数介绍

    1、json.dumps()

             json.dumps()实现python类型转化为json字符串,返回一个str对象 ,把一个Python对象编码转换成Json字符串 ,如果直接将dict类型的数据写入json文件中会发生报错

    从python原始类型向json类型的转化对照如下:

    import json
    import chardet 
    listStr = [1, 2, 3, 4] 
    tupleStr = (1, 2, 3, 4) 
    dictStr = {"city": "北京", "name": "大猫"} 
    json.dumps(listStr) # '[1, 2, 3, 4]' 
    json.dumps(tupleStr) # '[1, 2, 3, 4]' 
    # 注意:json.dumps() 处理中文时默认使用的ascii编码,会导致中文无法正常显示 
    print json.dumps(dictStr) 
    # 记住:处理中文时,添加参数 ensure_ascii=False 来禁用ascii编码 
    print json.dumps(dictStr, ensure_ascii=False) 
    # {"city": "北京", "name": "大刘"} 
    json.dumps(res, indent=2, sort_keys=True)格式化输出并按键排序

    2、json.loads()

         json.loads()把Json格式字符串解码转换成Python对象

    从json到python的类型转化对照如下:

    import json
    
    name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'} 
    
    jsDumps = json.dumps(name_emb) 
    
    jsLoads = json.loads(jsDumps) 
    
    print(name_emb)
    print(jsDumps)
    print(jsLoads)
    
    print(type(name_emb))
    print(type(jsDumps))
    print(type(jsLoads))     

              运行结果如下:

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

     3、json.dump()

             json.dump()用于将Python内置类型序列化为json对象后写入文件 。下面两种方法都可以将数据写入json文件

    import json 
    
    name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'} 
    
    emb_filename = ('/home/cqh/faceData/emb_json.json') 
    
    # solution 1
    jsObj = json.dumps(name_emb) 
    with open(emb_filename, "w") as f: 
    f.write(jsObj) 
    f.close() 
    
    # solution 2 
    json.dump(name_emb, open(emb_filename, "w"))

              运行结果如下:

     

      4、json.load()

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

    import json 
    
    emb_filename = ('/home/cqh/faceData/emb_json.json') 
    
    jsObj = json.load(open(emb_filename)) 
    
    print(jsObj)
    print(type(jsObj))
    
    for key in jsObj.keys():
    print('key: %s value: %s' % (key,jsObj.get(key)))

     运行结果如下:

  • 相关阅读:
    LiteMDA中支持Generic的BusinessObjectFactory实现
    Domain Object Layer Design and Sample Code for LiteMDA
    [BuildRelease Management]FinalBuilder
    Java RMI之HelloWorld
    深入浅出之正则表达式[转]
    Linux中的sh+source+export
    Scrum资料收集
    [MySQL]安装和启动
    .NET Remoting之Helloworld
    [在windows上使用Unix工具]SUA+Interix+SFU+Utilities and SDK for UNIXbased Applications
  • 原文地址:https://www.cnblogs.com/101718qiong/p/9844254.html
Copyright © 2011-2022 走看看