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


1 json.dumps()

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

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文件中

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()將字符串類型轉化成字典類型

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文件中讀取數據。

# 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常用操作參考json

  • 格式要求:

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

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

  • pickle;可以序列化多有數據,但是序列化之后只有python識別,能連續load多次

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM