Python json庫中load、loads、dump、dumps的區別與用法


1 json.loads()

json格式的數據轉化為字典類型

data_json = '{"msg": "登錄成功", "code": "10001", "data": null, "status":1}'
data_dict = json.loads(data_json, encoding="utf-8")

  

這個時候,如果使用 eval(data_json) 將會報錯。

因為這個json格式的數據中,存在python中沒有的數據類型:null

如果沒有null,eval方法是可以實現將數據轉化為字典類型。

NameError: name 'null' is not defined

所以,python中要將json格式的數據轉化為字典型,就用到:loads。

2 json.load()

 從文件中讀取json類型的數據,並轉化為字典類型

data_json = '{"msg": "登錄成功", "code": "10001", "data": null, "status":1}'
with open("json_file.txt", mode="r", encoding="utf-8") as file:
    date_dict = json.load(file)

  

3 json.dumps()

將Python中特定類型進行字符串化操作,即轉換為json格式的數據

注意:字典、列表等都可以進行字符串話操作,變為json格式。

如果存在中文,不使用【ensure_ascii=False】,寫入文件時,中文會被編碼。

Python中的None對應Json中的null

one_dict = {"name": "菲菲", "age": 18, "money": None}
one_str = str(one_dict)
one_json = json.dumps(one_dict)
two_json = json.dumps(one_dict, ensure_ascii=False)

  

one_tuple = ["菲菲", 18, None]
one_str = str(one_tuple)
one_json = json.dumps(one_tuple)
two_json = json.dumps(one_tuple, ensure_ascii=False)

  

4 json.dump()

將字典類型轉化為json字符串格式,寫入到文件中

one_dict = {"name": "字典型", "age": 18, "money": None}
with open("json_file.txt", mode="a",encoding="utf-8") as file:
    json.dump(one_dict, file, ensure_ascii=False)
one_tuple = ["菲菲", 18, None]
with open("json_file.txt", mode="a", encoding="utf-8") as file:
    json.dump(one_tuple, file, ensure_ascii=False)

 

看下面示例代碼以及運行結果:

indent可以美化格式。

one_dict = [{"Date": "8月17日", "Location": "圖書館", "Price": 0.00}, {"Date": "8月18日", "Location": "圖書館", "Price": None}]
with open("write_json.txt", mode="a", encoding="utf=8") as one_file:
    json.dump(one_dict, one_file, ensure_ascii=False, indent=2)

 

總結:

loads  將json格式的數據轉化為dict

dumps  將字典、列表t等類型的數據轉化成json格式

load  讀取json格式文件,並返回dict

dump  將字典、列表等格式的數據轉化為json格式,寫入文件

 

試了一下,

load,loads好像是只能轉化成為dict。(反序列化,流——對象)

dump,dumps可以將列表,字典數據轉化為json格式。(序列化,對象——可保存或可傳輸格式)

單詞后面有s,都是對文件操作。

 


免責聲明!

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



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