国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
自定義序列化函數(shù)
使用dumps 的cls 參數(shù)
先預(yù)處理數(shù)據(jù)再dump
總結(jié)一下
首頁(yè) 後端開(kāi)發(fā) Python教學(xué) Python JSON轉(zhuǎn)儲(chǔ)DateTime對(duì)象

Python JSON轉(zhuǎn)儲(chǔ)DateTime對(duì)象

Jul 09, 2025 am 12:21 AM
python json

解決Python中JSON序列化datetime對(duì)象的方法有三種:1. 使用default參數(shù)定義轉(zhuǎn)換函數(shù)處理無(wú)法識(shí)別的對(duì)象,適用於臨時(shí)解決方案;2. 通過(guò)繼承JSONEncoder並重寫(xiě)default方法,利用cls參數(shù)傳入自定義編碼器,適合統(tǒng)一處理場(chǎng)景;3. 在dump前手動(dòng)將datetime字段轉(zhuǎn)為字符串,適用於結(jié)構(gòu)簡(jiǎn)單的數(shù)據(jù)。這三種方式分別對(duì)應(yīng)不同使用場(chǎng)景,可根據(jù)需求選擇合適的方法。

Python JSON dump datetime object

在用Python 處理JSON 數(shù)據(jù)時(shí),經(jīng)常會(huì)遇到需要把包含datetime對(duì)象的數(shù)據(jù)結(jié)構(gòu)序列化成字符串的情況。但標(biāo)準(zhǔn)的json.dumpjson.dumps並不支持直接處理datetime類(lèi)型,所以會(huì)報(bào)錯(cuò):“TypeError: Object of type datetime is not JSON serializable”。

Python JSON dump datetime object

要解決這個(gè)問(wèn)題,有幾種常用方法。


自定義序列化函數(shù)

最直接的方式是自定義一個(gè)轉(zhuǎn)換函數(shù),在傳給json.dumps時(shí)通過(guò)default參數(shù)指定這個(gè)函數(shù)來(lái)處理無(wú)法識(shí)別的對(duì)象。

Python JSON dump datetime object
 import json
from datetime import datetime

def default(o):
    if isinstance(o, datetime):
        return o.isoformat()
    raise TypeError(f"Object of type {o.__class__.__name__} is not JSON serializable")

data = {
    "now": datetime.now()
}

json_str = json.dumps(data, default=default)
print(json_str)

這樣就可以讓json.dumps在遇到不認(rèn)識(shí)的對(duì)象時(shí)調(diào)用你提供的函數(shù)做轉(zhuǎn)換。返回的結(jié)果類(lèi)似於:

 {"now": "2024-10-18T12:34:56.789123"}

使用dumps 的cls 參數(shù)

如果你希望更規(guī)範(fàn)地封裝處理邏輯,可以繼承json.JSONEncoder並重寫(xiě)default()方法,然後通過(guò)cls參數(shù)傳入自定義的編碼器。

Python JSON dump datetime object
 import json
from datetime import datetime

class DateTimeEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, datetime):
            return o.isoformat()
        return super().default(o)

data = {
    "now": datetime.now()
}

json_str = json.dumps(data, cls=DateTimeEncoder)
print(json_str)

這種方式適合項(xiàng)目中有多處需要統(tǒng)一處理datetime的情況,便於維護(hù)和復(fù)用。


先預(yù)處理數(shù)據(jù)再dump

如果不想修改默認(rèn)的序列化行為,也可以在dump 前手動(dòng)將所有datetime字段轉(zhuǎn)為字符串。這種方法適用於結(jié)構(gòu)比較簡(jiǎn)單、字段可控的數(shù)據(jù)。

比如:

 from datetime import datetime

data = {
    "now": datetime.now(),
    "event_time": datetime(2024, 10, 18, 10, 0)
}

# 遍歷字典,將datetime 轉(zhuǎn)換為字符串for key in data:
    if isinstance(data[key], datetime):
        data[key] = data[key].isoformat()

json_str = json.dumps(data)
print(json_str)

這種方法雖然不夠“自動(dòng)化”,但在一些輕量級(jí)場(chǎng)景下反而更直觀,也更容易調(diào)試。


總結(jié)一下

  • 如果只是偶爾用一次,可以用default=參數(shù)臨時(shí)處理。
  • 如果想統(tǒng)一處理,推薦繼承JSONEncoder
  • 如果數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單,也可以先轉(zhuǎn)格式再dump。

基本上就這些辦法了,選哪個(gè)取決於你的使用場(chǎng)景和代碼風(fēng)格。

以上是Python JSON轉(zhuǎn)儲(chǔ)DateTime對(duì)象的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話題

Laravel 教程
1597
29
PHP教程
1488
72
python pandas融化示例 python pandas融化示例 Jul 27, 2025 am 02:48 AM

pandas.melt()用於將寬格式數(shù)據(jù)轉(zhuǎn)為長(zhǎng)格式,答案是通過(guò)指定id_vars保留標(biāo)識(shí)列、value_vars選擇需融化的列、var_name和value_name定義新列名,1.id_vars='Name'表示Name列不變,2.value_vars=['Math','English','Science']指定要融化的列,3.var_name='Subject'設(shè)置原列名的新列名,4.value_name='Score'設(shè)置原值的新列名,最終生成包含Name、Subject和Score三列

優(yōu)化用於內(nèi)存操作的Python 優(yōu)化用於內(nèi)存操作的Python Jul 28, 2025 am 03:22 AM

pythoncanbeoptimizedFormized-formemory-boundoperationsbyreducingOverHeadThroughGenerator,有效dattratsures,andManagingObjectLifetimes.first,useGeneratorSInsteadoFlistSteadoflistSteadoFocessLargedAtasetSoneItematatime,desceedingingLoadeGingloadInterveringerverneDraineNterveingerverneDraineNterveInterveIntMory.second.second.second.second,Choos,Choos

Python連接到SQL Server PYODBC示例 Python連接到SQL Server PYODBC示例 Jul 30, 2025 am 02:53 AM

安裝pyodbc:使用pipinstallpyodbc命令安裝庫(kù);2.連接SQLServer:通過(guò)pyodbc.connect()方法,使用包含DRIVER、SERVER、DATABASE、UID/PWD或Trusted_Connection的連接字符串,分別支持SQL身份驗(yàn)證或Windows身份驗(yàn)證;3.查看已安裝驅(qū)動(dòng):運(yùn)行pyodbc.drivers()並篩選含'SQLServer'的驅(qū)動(dòng)名,確保使用如'ODBCDriver17forSQLServer'等正確驅(qū)動(dòng)名稱(chēng);4.連接字符串關(guān)鍵參數(shù)

python django形式示例 python django形式示例 Jul 27, 2025 am 02:50 AM

首先定義一個(gè)包含姓名、郵箱和消息字段的ContactForm表單;2.在視圖中通過(guò)判斷POST請(qǐng)求處理表單提交,驗(yàn)證通過(guò)後獲取cleaned_data並返迴響應(yīng),否則渲染空表單;3.在模板中使用{{form.as_p}}渲染字段並添加{%csrf_token%}防止CSRF攻擊;4.配置URL路由將/contact/指向contact_view視圖;使用ModelForm可直接關(guān)聯(lián)模型實(shí)現(xiàn)數(shù)據(jù)保存,DjangoForms實(shí)現(xiàn)了數(shù)據(jù)驗(yàn)證、HTML渲染與錯(cuò)誤提示的一體化處理,適合快速開(kāi)發(fā)安全的表單功

什麼是加密貨幣中的統(tǒng)計(jì)套利?統(tǒng)計(jì)套利是如何運(yùn)作的? 什麼是加密貨幣中的統(tǒng)計(jì)套利?統(tǒng)計(jì)套利是如何運(yùn)作的? Jul 30, 2025 pm 09:12 PM

統(tǒng)計(jì)套利簡(jiǎn)介統(tǒng)計(jì)套利是一種基於數(shù)學(xué)模型在金融市場(chǎng)中捕捉價(jià)格錯(cuò)配的交易方式。其核心理念源於均值回歸,即資產(chǎn)價(jià)格在短期內(nèi)可能偏離長(zhǎng)期趨勢(shì),但最終會(huì)回歸其歷史平均水平。交易者利用統(tǒng)計(jì)方法分析資產(chǎn)之間的關(guān)聯(lián)性,尋找那些通常同步變動(dòng)的資產(chǎn)組合。當(dāng)這些資產(chǎn)的價(jià)格關(guān)係出現(xiàn)異常偏離時(shí),便產(chǎn)生套利機(jī)會(huì)。在加密貨幣市場(chǎng),統(tǒng)計(jì)套利尤為盛行,主要得益於市場(chǎng)本身的低效率與劇烈波動(dòng)。與傳統(tǒng)金融市場(chǎng)不同,加密貨幣全天候運(yùn)行,價(jià)格極易受到突發(fā)新聞、社交媒體情緒及技術(shù)升級(jí)的影響。這種持續(xù)的價(jià)格波動(dòng)頻繁製造出定價(jià)偏差,為套利者提供

與Python Biopython的生物信息學(xué) 與Python Biopython的生物信息學(xué) Jul 27, 2025 am 02:33 AM

Biopython是生物信息學(xué)中處理生物數(shù)據(jù)的重要Python庫(kù),其提供了豐富的功能以提升開(kāi)發(fā)效率。安裝方法簡(jiǎn)單,使用pipinstallbiopython即可完成安裝。導(dǎo)入Bio模塊後可快速解析FASTA文件等常見(jiàn)序列格式。 Seq對(duì)象支持DNA、RNA和蛋白質(zhì)序列的操作,如反轉(zhuǎn)互補(bǔ)和翻譯成蛋白序列。通過(guò)Bio.Entrez可訪問(wèn)NCBI數(shù)據(jù)庫(kù)並獲取GenBank數(shù)據(jù),但需設(shè)置郵箱。此外,Biopython支持兩兩序列比對(duì)及PDB文件解析,適用於結(jié)構(gòu)分析任務(wù)。

Python Psycopg2連接池示例 Python Psycopg2連接池示例 Jul 28, 2025 am 03:01 AM

使用psycopg2.pool.SimpleConnectionPool可有效管理數(shù)據(jù)庫(kù)連接,避免頻繁創(chuàng)建和銷(xiāo)毀連接帶來(lái)的性能開(kāi)銷(xiāo)。 1.創(chuàng)建連接池時(shí)指定最小和最大連接數(shù)及數(shù)據(jù)庫(kù)連接參數(shù),確保連接池初始化成功;2.通過(guò)getconn()獲取連接,執(zhí)行數(shù)據(jù)庫(kù)操作後使用putconn()將連接歸還池中,禁止直接調(diào)用conn.close();3.SimpleConnectionPool是線程安全的,適用於多線程環(huán)境;4.推薦結(jié)合contextmanager實(shí)現(xiàn)上下文管理器,確保連接在異常時(shí)也能正確歸還;

python iter和下一個(gè)示例 python iter和下一個(gè)示例 Jul 29, 2025 am 02:20 AM

iter()用於獲取迭代器對(duì)象,next()用於獲取下一個(gè)元素;1.使用iter()可將列表等可迭代對(duì)象轉(zhuǎn)換為迭代器;2.調(diào)用next()逐個(gè)獲取元素,當(dāng)元素耗盡時(shí)觸發(fā)StopIteration異常;3.通過(guò)next(iterator,default)可提供默認(rèn)值避免異常;4.自定義迭代器需實(shí)現(xiàn)__iter__()和__next__()方法,控制迭代邏輯;使用默認(rèn)值是安全遍歷的常用方式,整個(gè)機(jī)制簡(jiǎn)潔且實(shí)用。

See all articles