|
|
|
|
|
|
有很多場景需要在程序中使用序列化的JSON數據,如果你在進一步處理的應用程序中需要此序列化JSON數據,則可以將其轉換為本機Python對象,而不是將其寫入文件中。

例如,你收到一個發送開發者詳細信息的HTTP請求,你從數據庫表中獲取開發人員數據并將其存儲在Python字典或任何Python對象中,現在你需要將該數據發送回請求的應用程序,因此你需要將Python字典對象轉換為JSON格式的字符串以作為JSON字符串中的響應,為此,你需要使用json.dumps()。
json.dumps()返回的JSON字符串表示Python的dict。現在讓我們看看這個例子。
import json
def SendJsonResponse(resultDict):
print("Convert Python dictionary into JSON formatted String")
developer_str = json.dumps(resultDict)
print(developer_str)
# sample developer dict
developer_Dict = {
"name": "admin",
"salary": 9000,
"skills": ["Python", "Machine Learning", "Web Development"],
"email": "admin@webkaka.com"
}
SendJsonResponse(developer_Dict)
輸出
Writing JSON data into a Python String
{"name": "Jane Doe", "salary": 9000, "skills": ["Python", "Machine Learning", "Web Development"], "email": admin@webkaka.com}
json.dumps()的語法
json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
用途:用于將Python對象寫入JSON字符串。
使用的參數:
obj 是一個Python可序列化對象,你希望將其轉換為JSON格式。skipkeys為真(默認值:假),則不屬于基本類型的字典鍵 (str, int, float, bool, None) 將被跳過而不是引發一個 TypeError。例如,如果你的字典鍵之一是自定義 Python 對象,則在將字典轉換為 JSON 時將省略該鍵。ensure_ascii為 true(默認值),則保證輸出所有傳入的非 ASCII 字符都已轉義。如果ensure_ascii為 false,這些字符將按原樣輸出。allow_nan默認情況下為 True,因此將使用它們的 JavaScript 等效項(NaN、Infinity、-Infinity)。如果為 False,則序列化超出范圍的浮點值(nan、inf、-inf)將是一個 ValueError。indent參數用于漂亮地打印 JSON 以使其更具可讀性。默認值為(', ', ': '). 要獲得最緊湊的 JSON 表示,你應該使用(',', ':') 消除空格。sort_keys為真(默認:假),則字典的輸出將按鍵排序。編碼時 JSON 和 Python 實體之間的映射
要將 Python 對象編碼為 JSON 等效 json 模塊,請使用以下轉換表,使用json.dump()和json.dumps()的方法進行編碼時的翻譯。
現在讓我們看看如何將所有 Python 基本類型(例如 dict、list、set、tuple、str、 數字)轉換為 JSON 格式的數據。請參考下表了解 JSON 和 Python 數據類型之間的映射關系。
| Python | JSON |
|---|---|
| dict | object |
| list, tuple | array |
| str | string |
| int, float, int & float-derived Enums | number |
| True | true |
| False | false |
| None | null |
現在讓我們看看這個例子。
import json
sampleDict = {
"colorList": ["Red", "Green", "Blue"],
"carTuple": ("BMW", "Audi", "range rover"),
"sampleString": "pynative.com",
"sampleInteger": 457,
"sampleFloat": 225.48,
"booleantrue": True,
"booleanfalse": False,
"nonevalue": None
}
print("Converting Python primitive types into JSON")
resultJSON = json.dumps(sampleDict)
print("Done converting Python primitive types into JSON")
print(resultJSON)
輸出
Converting Python primitive types into JSON
Done converting Python primitive types into JSON
{"colorList": ["Red", "Green", "Blue"], "carTuple": ["BMW", "Audi", "range rover"], "sampleString": "pynative.com", "sampleInteger": 457, "sampleFloat": 225.48, "booleantrue": true, "booleanfalse": false, "nonevalue": null}
