欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決TypeError: Object of type xxx is not JSON serializable錯(cuò)誤問題

 更新時(shí)間:2023年06月25日 14:13:25   作者:zaf趙  
這篇文章主要介紹了解決TypeError: Object of type xxx is not JSON serializable錯(cuò)誤問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

TypeError: Object of type xxx is not JSON serializable

問題描述

在導(dǎo)入Python json包,調(diào)用json.dump/dumps函數(shù)時(shí),可能會(huì)遇到TypeError: Object of type xxx is not JSON serializable錯(cuò)誤,也就是無法序列化某些對(duì)象格式。

解決辦法

默認(rèn)的編碼函數(shù)很多數(shù)據(jù)類型都不能編碼,自定義序列化,因此可以自己寫一個(gè)Myencoder去繼承json.JSONEncoder

具體如下:

class MyEncoder(json.JSONEncoder):
? ? def default(self, obj):
? ? ? ? if isinstance(obj, np.integer):
? ? ? ? ? ? return int(obj)
? ? ? ? elif isinstance(obj, np.floating):
? ? ? ? ? ? return float(obj)
? ? ? ? elif isinstance(obj, np.ndarray):
? ? ? ? ? ? return obj.tolist()
? ? ? ? else:
? ? ? ? ? ? return super(MyEncoder, self).default(obj)

然后在調(diào)用json.dump/dumps時(shí),指定使用自定義序列化方法

json.dumps(data, cls=MyEncoder)?

dict to json

def dict_to_json(dict_obj,name, Mycls = None):
? ? js_obj = json.dumps(dict_obj, cls = Mycls, indent=4)
? ? with open(name, 'w') as file_obj:
? ? ? ? file_obj.write(js_obj)

json to dict

def json_to_dict(filepath, Mycls = None):
? ? with open(filepath,'r') as js_obj:
? ? ? ? dict_obj = json.load(js_obj, cls = Mycls)
? ? return dict_obj

TypeError: Object of type ‘int64’ is not JSON serializable (或者float32)

在使用json格式保存數(shù)據(jù)時(shí),經(jīng)常會(huì)遇到xxx is not JSON serializable,也就是無法序列化某些對(duì)象格式,我所遇見的是我使用了numpy時(shí),使用了np的數(shù)據(jù)格式,寫入data后,json.dumps(data)失敗,我們可以自己定定義對(duì)特定類型的對(duì)象的序列化

下面看下怎么定義和使用關(guān)于np數(shù)據(jù)類型的自定義。

1.首先,繼承json.JSONEncoder,自定義序列化方法。

class NpEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, np.integer):
return int(obj)
elif isinstance(obj, np.floating):
return float(obj)
elif isinstance(obj, np.ndarray):
return obj.tolist()
else:
return super(NpEncoder, self).default(obj)

2.使用dumps方法(我們可以直接把dict直接序列化為json對(duì)象)加上 cls=NpEncoder,data就可以正常序列化了

json.dumps(data, cls=NpEncoder)

其實(shí),很簡單,自定義一個(gè)序列化方法,然后dumps的時(shí)候加上cls=NpEncoder

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)telnet服務(wù)器的方法

    Python實(shí)現(xiàn)telnet服務(wù)器的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)telnet服務(wù)器的方法,涉及Python通過Telnet連接服務(wù)器的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Python?PaddleGAN實(shí)現(xiàn)調(diào)整照片人物年齡

    Python?PaddleGAN實(shí)現(xiàn)調(diào)整照片人物年齡

    這篇文章主要介紹了通過PaddleGAN實(shí)現(xiàn)照片人物的老年化和年輕化處理,文中的示例代碼講解有效,對(duì)我們學(xué)習(xí)或工作有一定的幫助,感興趣的可以學(xué)習(xí)一下
    2021-12-12
  • Python成功解決ZeroDivisionError:?division?by?zero的方法過程

    Python成功解決ZeroDivisionError:?division?by?zero的方法過程

    在Python編程中,ZeroDivisionError:divisionbyzero是因?yàn)閲L試除以零所導(dǎo)致的常見錯(cuò)誤,這篇文章詳細(xì)介紹了錯(cuò)誤的原因、解決方案,需要的朋友可以參考下
    2024-09-09
  • Python光學(xué)仿真從Maxwell方程組到波動(dòng)方程矢量算法理解學(xué)習(xí)

    Python光學(xué)仿真從Maxwell方程組到波動(dòng)方程矢量算法理解學(xué)習(xí)

    這篇文章主要為大家介紹了Python光學(xué)仿真從Maxwell方程組到波動(dòng)方程算法的理解學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Python實(shí)現(xiàn)單項(xiàng)鏈表的最全教程

    Python實(shí)現(xiàn)單項(xiàng)鏈表的最全教程

    單向鏈表也叫單鏈表,是鏈表中最簡單的一種形式,它的每個(gè)節(jié)點(diǎn)包含兩個(gè)域,一個(gè)信息域(元素域)和一個(gè)鏈接域,這個(gè)鏈接指向鏈表中的下一個(gè)節(jié)點(diǎn),而最后一個(gè)節(jié)點(diǎn)的鏈接域則指向一個(gè)空值,這篇文章主要介紹了Python實(shí)現(xiàn)單項(xiàng)鏈表,需要的朋友可以參考下
    2023-01-01
  • django框架實(shí)現(xiàn)模板中獲取request 的各種信息示例

    django框架實(shí)現(xiàn)模板中獲取request 的各種信息示例

    這篇文章主要介紹了django框架實(shí)現(xiàn)模板中獲取request 的各種信息,結(jié)合實(shí)例形式分析了Django框架模板直接獲取request信息的相關(guān)配置與操作技巧,需要的朋友可以參考下
    2019-07-07
  • python繪制雙柱形圖代碼實(shí)例

    python繪制雙柱形圖代碼實(shí)例

    這篇文章主要介紹了python繪制雙柱形圖代碼實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Python常用算法學(xué)習(xí)基礎(chǔ)教程

    Python常用算法學(xué)習(xí)基礎(chǔ)教程

    這篇文章主要學(xué)習(xí)Python常用算法,Python常用排序算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一
    2017-04-04
  • Python3基于plotly模塊保存圖片表格

    Python3基于plotly模塊保存圖片表格

    這篇文章主要介紹了Python3基于plotly模塊保存圖片表格,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python?OpenCV超詳細(xì)講解讀取圖像視頻和網(wǎng)絡(luò)攝像頭

    Python?OpenCV超詳細(xì)講解讀取圖像視頻和網(wǎng)絡(luò)攝像頭

    OpenCV用C++語言編寫,它具有C?++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac?OS,OpenCV主要傾向于實(shí)時(shí)視覺應(yīng)用,并在可用時(shí)利用MMX和SSE指令,本篇文章帶你了解OpenCV讀取圖像視頻與網(wǎng)絡(luò)攝像頭的方法
    2022-04-04

最新評(píng)論