轉自:http://blog.csdn.net/mr_evanchen/article/details/77879967python
Json模塊dumps、loads、dump、load函數介紹
json
一、json.dumps()函數
json.dumps()用於將dict類型的數據轉成str,由於若是直接將dict類型的數據寫入json文件中會發生報錯,所以在將數據寫入時須要用到該函數。url
- import json
- name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}
- jsObj = json.dumps(name_emb)
- print(name_emb)
- print(jsObj)
- print(type(name_emb))
- print(type(jsObj))
運行結果以下:spa
- {'a': '1111', 'c': '3333', 'b': '2222', 'd': '4444'}
- {"a": "1111", "c": "3333", "b": "2222", "d": "4444"}
- <type 'dict'>
- <type 'str'>
若在數據寫入json文件時,未先進行轉換,報錯以下.net
- 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()
![](http://static.javashuo.com/static/loading.gif)
轉換後再寫入,則不報錯code
二、json.loads()blog
json.loads()用於將str類型的數據轉成dict。unicode
- 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))
運行結果以下:get
'a'變成了u'a'是由於發生了類型轉換,str會轉換成unicode
- {'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'>
三、json.dump()
json.dump()用於將dict類型的數據轉成str,並寫入到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"))
運行結果以下:
四、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)))
運行結果以下:
- {u'a': u'1111', u'c': u'3333', u'b': u'2222', u'd': u'4444'}
- <type 'dict'>
- key: a value: 1111
- key: c value: 3333
- key: b value: 2222
- key: d value: 4444