技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類目錄

贊助商

最新文章

搜索

兩種方法Python將日期時(shí)間DateTime序列化為JSON

作者:admin    時(shí)間:2021-12-31 9:24:32    瀏覽:

在本文中,我們將看到如何將日期時(shí)間 DateTime 實(shí)例序列化為 JSON。有多種方法可以實(shí)現(xiàn)這一點(diǎn),你可以選擇你認(rèn)為對(duì)你的問(wèn)題更有用的方式。

如何將 Python Datetime 序列化為 JSON
解釋了如何將 Python Datetime 序列化為 JSON

子類 JSONEncoder 將 DateTime 序列化為 JSON

Python json 模塊提供了一個(gè)json.JSONEncoder類。如果我們想要更多定制的輸出,我們可以擴(kuò)展它。即,要將 DateTime 實(shí)例序列化為 JSON,我們需要繼承 JSONEncoder 以便我們可以實(shí)現(xiàn)自定義序列化。

當(dāng)我們說(shuō)子類json.JSONEncoder時(shí),意味著我們需要覆蓋JSONEncoder 類的default()方法,我們可以在其中將 DateTime 值轉(zhuǎn)換為 ISO 格式,以便它可以序列化。ISO 格式產(chǎn)生一個(gè)序列化版本的datetime。

根據(jù) ISO 8601,它以YYYY-MM-DDTHH:MM:SS易于編碼和解碼的格式轉(zhuǎn)換 DateTime 。我們可以使用一種isoformat()方法將 DateTime 值轉(zhuǎn)換為 ISO 格式。

JSON 模塊的json.dump()json.dumps()方法有一個(gè)cls kwarg。使用這個(gè)參數(shù),你可以傳遞一個(gè)自定義的 JSON 編碼器,它告訴json.dump()json.dumps()方法如何將你的 DateTime 編碼為 JSON 格式的數(shù)據(jù)。

我有一個(gè)員工dict,其中包含員工詳細(xì)信息和他/她的加入日期。讓我們看看如何將員工詳細(xì)信息編碼為 JSON。

現(xiàn)在,讓我們看看這個(gè)例子。

import json
import datetime
from json import JSONEncoder

employee = {
    "id": 456,
    "name": "William Smith",
    "salary": 8000,
    "joindate": datetime.datetime.now()
}

# subclass JSONEncoder
class DateTimeEncoder(JSONEncoder):
        #Override the default method
        def default(self, obj):
            if isinstance(obj, (datetime.date, datetime.datetime)):
                return obj.isoformat()

print("Printing to check how it will look like")
print(DateTimeEncoder().encode(employee))

print("Encode DateTime Object into JSON using custom JSONEncoder")
employeeJSONData = json.dumps(employee, indent=4, cls=DateTimeEncoder)
print(employeeJSONData)

輸出

Printing to check how it will look like
{"id": 456, "name": "William Smith", "salary": 8000, "joindate": "2020-01-08T18:52:50.637635"}
Encode DateTime Object into JSON using custom JSONEncoder
{
    "id": 456,
    "name": "William Smith",
    "salary": 8000,
    "joindate": "2020-01-08T18:52:50.637635"
}

通過(guò)將日期時(shí)間轉(zhuǎn)換為字符串來(lái)序列化日期時(shí)間

你可以將dateTime value 轉(zhuǎn)換為其 String 表示并直接對(duì)其進(jìn)行編碼,這里你不需要編寫任何編碼器。我們需要像這樣json.dump()json.dumps() 設(shè)置str的默認(rèn)參數(shù)json.dumps(obj, default=str)。

讓我們看看這個(gè)例子。

import json
import datetime

employee = {
    "id": 456,
    "name": "William Smith",
    "salary": 8000,
    "joindate": datetime.datetime.now()
}
print("JSON Data")
print(json.dumps(employee, default=str))

輸出:

JSON Data
{"id": 456, "name": "William Smith", "salary": 8000, "joindate": "2020-01-08 18:39:30.161488"}

總結(jié)

本文通過(guò)兩種方法介紹了Python將日期時(shí)間DateTime序列化為JSON,你可以選擇你認(rèn)為對(duì)你的問(wèn)題更有用的方式。

您可能對(duì)以下文章也感興趣

標(biāo)簽: Python  
x
  • 站長(zhǎng)推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */