「json&pickle」dumps,loads,dump,load的區別

json:優點:所有語言通用,缺點:只能序列化部分數據類型;不能連續load多次pickle;可以序列化多有數據,但是序列化之後只有python識別,能連續load多次

1 .json.dumps()

json.dumps()是將字典類型轉化成字符串類型。

<code>import jsonname_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}jsObj = json.dumps(name_emb)print(name_emb)print(jsObj)/<code>

2 .json.dump()

json.dump()用於將dict類型的數據轉成str,並寫入到json文件中

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

3 .json.loads()

json.loads()將字符串類型轉化成字典類型

<code>import jsonname_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)/<code>

4 json.load()

json.load()用於從json文件中讀取數據。

<code># json_load.pystrList = json.load(with open("listStr.json",mode='r'))print strListprint strDict# {u'city': u'\\\\u5317\\\\u4eac', u'name': u'\\\\u5927\\\\u5218'}/<code>pickle常用操作參考json

格式要求:

<code>1.只能包含int/ str/ list/ dict/ bool/float 不存在元組/集合最外層必須是一個列表或字典在json中如果有字符串,必須是雙引號"json中的字符串"真假小寫true/false/<code>


字典或者列表中存在中文,序列化的時候或轉為UNcode格式,如果想保存中文就需要進行以下操作

<code>v1=[1,2,3,4,'2','大牛']val = json.dumps(v1,ensure_ascii=False)print(val) #[1, 2, 3, 4, "2", "大牛"]/<code>



總結: dump與json轉化時可以結合文件操作,dumps與jsons不能.

最後呢,歡迎指正.