json.dumps()實現python類型轉化爲json字符串,返回一個str對象 ,把一個Python對象編碼轉換成Json字符串 ,若是直接將dict類型的數據寫入json文件中會發生報錯python
從python原始類型向json類型的轉化對照以下: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)格式化輸出並按鍵排序
二、json.loads()編碼
json.loads()把Json格式字符串解碼轉換成Python對象code
從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))
運行結果以下:blog
'a'變成了u'a'是由於發生了類型轉換,str會轉換成unicode排序
json.dump()用於將Python內置類型序列化爲json對象後寫入文件 。下面兩種方法均可以將數據寫入json文件ci
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"))
運行結果以下:unicode
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)))
運行結果以下: