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))

运行结果如下:


  1. {'a''1111''c''3333''b''2222''d''4444'}  

  2. {"a""1111""c""3333""b""2222""d""4444"}  

  3. 'dict'>  

  4. 'str'

若在数据写入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. # jsObj = json.dumps(name_emb)      

  8.     

  9. with open(emb_filename, "w") as f:    

  10.     f.write(name_emb)    

  11.     f.close() 

Json模块dumps、loads、dump、load函数介绍_第1张图片

转换后再写入,则不报错

Json模块dumps、loads、dump、load函数介绍_第2张图片

备注:

python json.dumps 中的ensure_ascii 参数引起的中文编码问题

在使用json.dumps时要注意一个问题

 >>> import json

>>> print json.dumps('中国')

"\u4e2d\u56fd"

 输出的会是

'中国' 中的ascii 字符码,而不是真正的中文。

 这是因为json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False:

 >>> import json

>>> print json.dumps('中国')

"\u4e2d\u56fd"

>>> print json.dumps('中国',ensure_ascii=False)

"中国"

>>> 

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)) 

运行结果如下:

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

  1. {'a''1111''c''3333''b''2222''d''4444'}  

  2. {"a""1111""c""3333""b""2222""d""4444"}  

  3. {u'a': u'1111', u'c': u'3333', u'b': u'2222', u'd': u'4444'}  

  4. 'dict'>  

  5. 'str'>  

  6. 'dict'

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模块dumps、loads、dump、load函数介绍_第3张图片


 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)))

运行结果如下:

  1. {u'a': u'1111', u'c': u'3333', u'b': u'2222', u'd': u'4444'}  

  2. 'dict'>  

  3. key: a   value: 1111  

  4. key: c   value: 3333  

  5. key: b   value: 2222  

  6. key: d   value: 4444

本文出自https://blog.csdn.net/mr_evanchen/article/details/77879967