|
|
|
|
|
Python的內置 json 模塊只能處理具有直接 JSON 等價物的Python 基元類型(例如,str、int、float、bool、None等)。
如果 Python 字典包含一個自定義 Python 對象作為鍵之一,并且如果我們嘗試將其轉換為 JSON 格式,你將得到一個 TypeError 即Object of type "Your Class" is not JSON serializable.
如果 JSON 數(shù)據(jù)中不需要此自定義對象,你可以使用json.dump()
方法的skipkeys=true
參數(shù)跳過它。
如果skipkeys=true
為 True,則將dict
跳過非基本類型(str、int、float、bool、None)的鍵,而不是引發(fā) TypeError。
如果需要轉成 JSON,那么可以參考文章如何使 Python 類 JSON 可序列化。
現(xiàn)在,讓我們看看這個例子。
import json
class PersonalInfo:
def __init__(self, name, age):
self.name = name
self.age = age
def showInfo(self):
print("Developer name is " + self.name, "Age is ", self.age)
dev = PersonalInfo("John", 36)
developer_Dict = {
PersonalInfo: dev,
"salary": 9000,
"skills": ["Python", "Machine Learning", "Web Development"],
"email": "admin@webkaka.com"
}
print("Writing JSON data into file by skipping non-basic types")
with open("developer.json", "w") as write_file:
json.dump(developer_Dict, write_file, skipkeys=True)
print("Done")
輸出:
Writing JSON data into file by skipping non-basic types
Done
文件內容:
在 JSON 輸出中看到,該PersonalInfo對象被跳過。