細說【json&pickle】dumps,loads,dump,load的區別

【json&pickle】dumps,loads,dump,load的區別

1 json.dumps()

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

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

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

3 json.loads()

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

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)

4 json.load()

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

# json_load.py 
strList = json.load(with open("listStr.json",mode='r')) 
print strList 
print strDict 
# {u'city': u'\u5317\u4eac', u'name': u'\u5927\u5218'}
  • pickle經常使用操做參考jsonci

  • 格式要求:字符串

    • 只能包含int/ str/ list/ dict/ bool/float 不存在元組/集合
    • 最外層必須是一個列表或字典
    • 在json中若是有字符串,必須是雙引號"json中的字符串"
    • 真假小寫true/false
  • 字典或者列表中存在中文,序列化的時候或轉爲UNcode格式,若是想保存中文就須要進行如下操做it

    v1=[1,2,3,4,'2','大牛']
    val = json.dumps(v1,ensure_ascii=False)
    print(val)     #[1, 2, 3, 4, "2", "大牛"]
  • json:優勢:全部語言通用,缺點:只能序列化部分數據類型;不能連續load屢次io

  • pickle;能夠序列化多有數據,可是序列化以後只有python識別,能連續load屢次class

總結: dump與json轉化時能夠結合文件操做,dumps與jsons不能.import

相關文章
相關標籤/搜索