1. json序列化(字典轉成字符串)方法:
dumps:無文件操作 dump:序列化+寫入文件
2. json反序列化(字符串轉成字典)方法:
loads:無文件操作 load: 讀文件+反序列化
1、基本使用
import json# 導入模塊 d = {'s':'you','d':'are'} #給一個字典 j = json.dumps(d)#dumps字典轉換成字符串 print(type(j)) print(j) d1 = json.loads(j)#loads字符串轉換成字典 print(type(d1)) print(d1) print(d1.keys())#輸出字典的key print(d1.values())#輸出字典的值 執行后得到的結果: <class 'str'> {"d": "are", "s": "you"} <class 'dict'> {'d': 'are', 's': 'you'} dict_keys(['d', 's']) dict_values(['are', 'you'])
2、json.dumps()
json.dumps()用於將dict類型的數據轉成str,因為如果直接將dict類型的數據寫入json文件中會發生報錯,因此在將數據寫入時需要用到該函數。
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))
運行結果如下:
{'a': '1111', 'c': '3333', 'b': '2222', 'd': '4444'} {"a": "1111", "c": "3333", "b": "2222", "d": "4444"} <type 'dict'> <type 'str'>
3、json.loads()
json.loads()用於將str類型的數據轉成dict。
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
{'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'>
4、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') # 方法 1 jsObj = json.dumps(name_emb) with open(emb_filename, "w") as f: f.write(jsObj) f.close() # 方法 2 json.dump(name_emb, open(emb_filename, "w"))
5、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