一、json簡介
JSON,全稱JavaScript Object Notation,是一種輕量級的數據串列化格式。JSON的設計初衷是為了更方便地進行數據傳輸和交換,常用於Web前端與後端數據的通信和存儲。JSON的格式與JavaScript對象字面值的語法有很大相似性,因此得名JavaScript Object Notation。
二、json在Python中的操作
1. dump與load方法
Python中的json模塊提供了兩組方法完成json數據的解析與生成操作。其中,dump與load方法用於將json數據寫入文件或從文件中讀取,實現文件與json數據之間的轉換。
import json # 將數據寫入json文件 data = {"name": "John", "age": 30, "city": "New York"} with open("data.json", "w") as f: json.dump(data, f) # 從json文件中讀取數據 with open("data.json", "r") as f: data = json.load(f)
dump將Python數據轉化為json數據後寫入文件,而load將從文件讀取json數據並將其轉化為Python數據。其中,dump和load方法的第二個參數通常為文件句柄(File Object),同時具有寫入、讀取和關閉文件的功能。
2. dumps與loads方法
dumps和loads方法用於直接在Python內存中進行json數據的解析與生成操作。dumps方法將Python數據轉換為json數據,loads方法將json數據轉換為Python數據。
import json # 將Python數據轉換為json數據 data = {"name": "John", "age": 30, "city": "New York"} json_data = json.dumps(data) # 將json數據轉換為Python數據 python_data = json.loads(json_data)
在實際的開發中,經常需要將從前端傳來的json數據轉化為Python對象進行操作,或是將Python對象轉化為json數據返回前端。這時,loads和dumps方法就非常方便了。
三、load與loads方法的區別
load和loads的主要區別在於,load可以從文件中讀取json數據,而loads只能從字元串中讀取。因此,load需要提供一個文件句柄作為參數,而loads需要提供一個字元串作為參數。
四、json數據的格式化輸出
json模塊提供了indent參數用於控制輸出的縮進格式。indent可以是整數或字元串,代表縮進的字元數或字元串。可以將其設置為2、4、8或”\t”等。
import json # 設置indent參數為4 data = {"name": "John", "age": 30, "city": "New York"} json_data = json.dumps(data, indent=4) print(json_data)
輸出結果:
{ "name": "John", "age": 30, "city": "New York" }
使用indent參數可以使輸出的json數據更易於閱讀和理解。
五、json數據的排序
在Python中,json數據默認是按照鍵的字母順序進行排序的。我們也可以通過sort_keys參數自定義排序方式。
import json # 設置sort_keys參數為False data = {"name": "John", "age": 30, "city": "New York"} json_data = json.dumps(data, sort_keys=False) print(json_data)
輸出結果:
{ "name": "John", "age": 30, "city": "New York" }
sort_keys參數的默認值為True,當將其設置為False時,json數據將按照第一次出現的順序進行排序。
六、json數據的解析和生成
json數據的解析和生成是json模塊最重要的功能之一。我們可以通過json.loads方法將json數據解析為Python數據,也可以通過json.dumps方法將Python數據轉換為json數據。下面是一些常用的例子:
import json # json數據解析為Python數據 json_data = '{"name": "John", "age": 30, "city": "New York"}' python_data = json.loads(json_data) print(python_data) # Python數據轉換為json數據 data = {"name": "John", "age": 30, "city": "New York"} json_data = json.dumps(data) print(json_data) # json數據解析為Python數據(包含嵌套結構) json_data = '{"name": "John", "age": 30, "city": {"name": "New York", "population": 8398748}}' python_data = json.loads(json_data) print(python_data) print(python_data["city"]["name"]) # Python數據轉換為json數據(包含嵌套結構) data = {"name": "John", "age": 30, "city": {"name": "New York", "population": 8398748}} json_data = json.dumps(data) print(json_data)
在實際的開發中,我們經常需要對json數據進行解析和生成操作。json模塊提供了非常方便的解析和生成方法,大大簡化了操作流程。
七、總結
本文主要介紹了Python中的json模塊及其相關方法,包括dump、load、dumps、loads等方法的使用方法及區別,以及json數據的格式化輸出和排序等常用功能。json模塊的出現大大簡化了json數據的解析和生成操作,為Python開發者提供了更加高效、便捷的數據處理方案。
原創文章,作者:FKVN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/147600.html