JSON 無法序列化

JSON 無法序列化通常出現在嘗試將某些類型的數據轉換為 JSON 字符串時,這些數據類型可能包含不可序列化的內容。 JSON 序列化器通常無法處理特定類型的數據,例如日期時間對象、自定義類實例等。在將數據轉換為 JSON 字符串之前,確保所有數據都是可序列化的。我們可以編寫自定義的序列化器來處理不可序列化的對象,或者將對象轉換為可序列化的類型。

在這里插入圖片描述

1、問題背景

您有一個 JSON 對象,其中包含一個 ObjectId() 對象。當您嘗試使用 json.dumps() 函數序列化這個對象時,您收到了錯誤提示:“raise TypeError(repr(o) + " is not JSON serializable")”。

2、解決方案

要解決此問題,您可以使用兩種方法:

方法一:將 ObjectId() 對象替換為基本值。例如:

import jsond = {"objectid": "427912","fooditems": "Cold Truck: Hamburger: cheeseburgers: hot dogs: hot sandwiches: cold sandwiches: egg muffins: cup of noodles: corn dogs: canned soup: coffee: hot cocoa: hot tea: gatorade: juice: milk: soda: water: fruits: fruit salad: rice pudding: yogurt: candy bars: chips: cookies: donuts: granola bars: muffins","facilitytype": "Truck","priorpermit": "1","location": {"latitude": "37.730906164188","needs_recoding": False,"longitude": "-122.373302577475"},"lot": "008","cnn": "7253000","status": "APPROVED","schedule": "http://bsm.sfdpw.org/PermitsTracker/reports/report.aspx?title=schedule&report=rptSchedule&params=permit=13MFF-0072&ExportPDF=1&Filename=13MFF-0072_schedule.pdf","locationdescription": "INNES AVE: EARL ST to ARELIOUS WALKER DR (700 - 799)","latitude": "37.7309061503597","blocklot": "4644008","address": "Assessors Block 4644/Lot008","approved": "2013-04-04T08:44:08","received": "Mar 15 2013 10:24AM","applicant": "Park's Catering","longitude": "-122.373302577485","expirationdate": "2014-03-15T00:00:00","permit": "13MFF-0072","y": "2094023.408","x": "6019956.89","block": "4644"
}# 將 ObjectId() 對象替換為字符串
d["_id"] = str(d["_id"])# 序列化 JSON 對象
json_string = json.dumps(d)print(json_string)

方法二:為 ObjectId() 對象提供一個默認編碼函數。例如:

import jsondef objectid_default(obj):if isinstance(obj, ObjectId):return str(obj)  # hex string versionraise TypeError(obj)d = {"objectid": ObjectId("52afeb27e8de3f3174110041"),"fooditems": "Cold Truck: Hamburger: cheeseburgers: hot dogs: hot sandwiches: cold sandwiches: egg muffins: cup of noodles: corn dogs: canned soup: coffee: hot cocoa: hot tea: gatorade: juice: milk: soda: water: fruits: fruit salad: rice pudding: yogurt: candy bars: chips: cookies: donuts: granola bars: muffins","facilitytype": "Truck","priorpermit": "1","location": {"latitude": "37.730906164188","needs_recoding": False,"longitude": "-122.373302577475"},"lot": "008","cnn": "7253000","status": "APPROVED","schedule": "http://bsm.sfdpw.org/PermitsTracker/reports/report.aspx?title=schedule&report=rptSchedule&params=permit=13MFF-0072&ExportPDF=1&Filename=13MFF-0072_schedule.pdf","locationdescription": "INNES AVE: EARL ST to ARELIOUS WALKER DR (700 - 799)","latitude": "37.7309061503597","blocklot": "4644008","address": "Assessors Block 4644/Lot008","approved": "2013-04-04T08:44:08","received": "Mar 15 2013 10:24AM","applicant": "Park's Catering","longitude": "-122.373302577485","expirationdate": "2014-03-15T00:00:00","permit": "13MFF-0072","y": "2094023.408","x": "6019956.89","block": "4644"
}# 使用默認編碼函數序列化 JSON 對象
json_string = json.dumps(d, default=objectid_default)print(json_string)

通過理解上述問題并采取相應的解決方法,相信我們能更好的解決 JSON 無法序列化的問題,并成功將數據轉換為 JSON 字符串。

如有任何問題可以截圖留言討論。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/24006.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24006.shtml
英文地址,請注明出處:http://en.pswp.cn/web/24006.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

clickhouse學習筆記(三)常見表引擎

目錄 一、 MergeTree系列引擎 1、MergeTree 數據TTL (1) 列級別 TTL (2) 表級別 TTL 存儲策略 2、ReplacingMergeTree 3、CollapsingMergeTree 4、VersionedCollapsingMergeTree 5、SummingMergeTree 6、AggregatingMe…

「動態規劃」如何求地下城游戲中,最低初始健康點數是多少?

174. 地下城游戲https://leetcode.cn/problems/dungeon-game/description/ 惡魔們抓住了公主并將她關在了地下城dungeon的右下角。地下城是由m x n個房間組成的二維網格。我們英勇的騎士最初被安置在左上角的房間里,他必須穿過地下城并通過對抗惡魔來拯救公主。騎士…

【Text2SQL 論文】C3:使用 ChatGPT 實現 zero-shot Text2SQL

論文:C3: Zero-shot Text-to-SQL with ChatGPT ???? arXiv:2307.07306,浙大 Code:C3SQL | GitHub 一、論文速讀 使用 ChatGPT 來解決 Text2SQL 任務時,few-shots ICL 的 setting 需要輸入大量的 tokens,這有點昂貴…

基于GLM生成SQL,基于MOSS生成SQL,其中什么是GLM 什么是MOSS

GLM 和 MOSS 是兩種不同的模型或系統,通常用在自然語言處理 (NLP) 和生成任務中,如生成 SQL 查詢。讓我們逐個解釋它們的含義和用途: GLM (Generalized Language Model) GLM 是一種通用語言模型,設計用于處理和生成自然語言。以…

MacOS M系列芯片一鍵配置多個不同版本的JDK

第一步:下載JDK。 官網下載地址:Java Archive | Oracle 選擇自己想要下載的版本,一般來說下載一個jdk8和一個jdk11就夠用了。 M系列芯片選擇這兩個,第一個是壓縮包,第二個是dmg可以安裝的。 第二步:編輯…

eclipse插件開發(二)RCP第三方庫的引入方式

RCP第三方庫的引入 最近在RCP開發過程中遇到JSON串與對象互轉的問題,如何像spring開發模式一樣引入第三方庫呢?eclipse插件開發中用到p2庫,但也支持maven庫的引入。關鍵在于.target這個關鍵文件。 .target 文件用于定義一個目標平臺&#x…

民主測評要做些什么?

民主測評,作為一種重要的民主管理工具,旨在通過廣泛征求群眾意見,對特定對象或事項進行客觀、公正的評價。它不僅是推動民主參與、民主監督的重要手段,也是提升治理效能、促進社會和諧的有效途徑。以下將詳細介紹民主測評的主要過…

常見的布局方法及優缺點

頁面布局常用的方法有浮動、定位、flex、grid網格布局、柵格系統布局 浮動: 優點:兼容性好。 缺點:浮動會脫離標準文檔流,因此要清除浮動。我們解決好這個問題即可。 絕對定位 優點:快捷。 缺點:導致子…

如何以非交互方式將參數傳遞給交互式腳本

文章目錄 問題回答1. 使用 Here Document2. 使用 echo 管道傳遞3. 使用文件描述符4. 使用 expect 工具 參考 問題 我有一個 Bash 腳本,它使用 read 命令以交互方式讀取命令參數,例如 yes/no 選項。是否有一種方法可以在非交互式腳本中調用這個腳本&…

vue用vite配置代理解決跨域問題(target、rewrite和changeOrigin的使用場景)

Vite的target、rewrite和changeOrigin的使用場景 1. target 使用場景:target 屬性在 Vite 的 vite.config.ts 或 vite.config.js 文件的 server.proxy 配置中指定,用于設置代理服務器應該將請求轉發到的目標地址。這通常是一個后端服務的API接口地址。…

Chrome 源碼閱讀:跟蹤一個鼠標事件的流程

我們通過在關鍵節點打斷點的方式,去分析一個鼠標事件的流程。 我們知道chromium是多進程模型,那么,我們可以推測:一個鼠標消息先從主進程產生,再通過跨進程通信發送給渲染進程,渲染進程再發送給WebFrame&a…

【FAS】《CN103106397B》

原文 CN103106397B-基于亮瞳效應的人臉活體檢測方法-授權-2013.01.19 華南理工大學 方法 / 點評 核心方法用的是傳統的形態學和模板匹配,亮點是雙紅外發射器做差分 差分:所述FPGA芯片控制兩組紅外光源(一近一遠)交替亮滅&…

[力扣題解] 700. 二叉搜索樹中的搜索

題目:700. 二叉搜索樹中的搜索 思路 觀察法 二叉搜索樹的搜索操作,比較根節點的數值, 如果等于:找到了;大于根節點:在右子樹,往右走;小于根節點:在左子樹,…

【Java基礎】線程方法

start():啟動線程,使線程進入就緒狀態。 run():線程執行的代碼邏輯,需要重寫該方法。 停止線程 void interrupt() 中斷線程,讓它重新去爭搶cpu 如果目標線程長時間等待,則應該使用interrupt方法來中斷等待…

RDMA (2)

iWARP(RDMA)怎么工作的 招式1:bypass內核 非iWARP時,當應用向網絡適配器發出讀或者寫命令時,命令穿過用戶空間以及內核空間,因此需要在用戶空間和內核空間間進行切換。 iWARP使用RDMA,讓應用直接將命令送達到網絡適配器。這規避了對內核的調用,減少了開銷和延遲。 招式2…

【Kubernetes】三證集齊 Kubernetes實現資源超賣(附鏡像包)

目錄 插敘前言一、思考和原理二、實現步驟0. 資料包1. TLS證書簽發2. 使用 certmanager 生成簽發證書3. 獲取secret的內容 并替換CA_BUNDLE4.部署svc deploy 三、測試驗證1. 觀察pod情況2. 給node 打上不需要超售的標簽【可以讓master節點資源不超賣】3. 資源實現超賣4. 刪除還…

[補題記錄]Leetcode 209.長度最小的子數組

傳送門:長度最小的子數組 Problem/題意 給定一個整數數組和一個整數 target,要求算出數組中最小長度的連續子數組,數組元素的和大于等于 target。 Thought/思路 題目要求維護最小的長度,因此我們希望:當條件不滿足…

IP域名關系的研究與系統設計(學習某知名測繪系統)

IP域名關系庫管理包括域名庫檢索和whois庫檢索,詳情如下。 域名庫檢索支持以下5項功能: 1.通過過濾器檢索 篩選條件包含IP地址、口令、工具名稱、可利用的漏洞編號、創建時間; 2.通過關鍵字檢索 在查詢框中輸入域名庫名稱的部分關鍵詞&a…

計算機組成結構—IO系統概述

目錄 一、I/O 系統的發展 1. 早期階段 2. 接口模塊和 DMA 階段 3. 通道結構階段 4. 處理機階段 二、I/O 系統的組成 1. I/O 軟件 2. I/O 硬件 三、I/O 設備 1. I/O 設備分類 2. I/O 設備的組成 在計算機中,除 CPU 和主存兩大模塊之外,第三個重…

Apple開發者應用商店(AppStore)描述文件及ADHOC描述文件生成

創建AD HOC描述文件 1.選中Profiles,然后點擊加號創建 2.創建已注冊設備可安裝描述文件 3.選擇要注冊的id 4.選擇證書 5.選擇設備 6.輸入文件名,點擊生成 7.生成成功,點擊下載