首页 > 编程语言 >Python Object of type float32 is not JSON serializable

Python Object of type float32 is not JSON serializable

时间:2023-11-13 22:55:21浏览次数:44  
标签:return temp Python type Object JSON data float32

前言

使用 json.dumps(result) 对数据转 JSON 数据出现错误:TypeError: Object of type float32 is not JSON serializable

数据中存在的 float32 数据是 numpy 格式的数据,Python 内置的 float 类型可以写入 JSON 中,但是 numpy 的 float32 类型数据不能写入 JSON,所以应将 numpy.float32 类型数据转成 Python.float 类型数据

解决

在函数中使用 str() 函数将 result 转成字符串

print("result", result)
dumps = json.dumps(str(result))
print("dumps", dumps)

这样代码确实可以运行,但是转换的结果却是整个字符串

除此之外,见到有博友封装,如下:

import numpy as np
 
# 对numpy的数据类型进行转换
# 场景:numpy.float32类型不能写入JSON,需要转成Python的float类型
def convertNumpyDataType(data):
    if type(data) is list:
        return convertList(data)
    elif type(data) is dict:
        return convertDict(data)
    elif type(data) is np.float32:
        return convertFloat32(data)
    return data
 
def convertList(data):
    if type(data) is not list:
        return data
 
    temp = []
    for obj in data:
        temp.append(convertNumpyDataType(obj))
 
    return temp
 
def convertDict(data):
    temp = data.copy()
    if type(data) is not dict:
        return temp
 
    for key in data.keys():
        obj = data.get(key)
        temp.__setitem__(key, convertNumpyDataType(obj))
 
    return temp
 
def convertFloat32(data):
    return float(data)

标签:return,temp,Python,type,Object,JSON,data,float32
From: https://www.cnblogs.com/niuben/p/17830528.html

相关文章

  • 用python求Pi
    classTiao(object):def__init__(self):self.obj1=datetime.timedelta(seconds=1)self.var='%H:%M:%S'defadd(self,var):a=datetime.datetime.strptime(var,self.var)b=a+self.obj1returnstr(b.st......
  • Python实现顺序栈
    顺序栈的基本模型完整代码点击查看代码#!/usr/bin/envpython3classStack:#stack:initiate,is_empty,is_full,pushandpopdef__init__(self,maxsize):self.data=[0foriinrange(maxsize)]self.top=-1self.maxsize......
  • 如何在 Python 中执行 MySQL 结果限制和分页查询
    PythonMySQL限制结果限制结果数量示例1:获取您自己的Python服务器选择"customers"表中的前5条记录:importmysql.connectormydb=mysql.connector.connect(host="localhost",user="您的用户名",password="您的密码",database="我的数据库"......
  • 如何在 Python 中执行 MySQL 结果限制和分页查询
    PythonMySQL限制结果限制结果数量示例1:获取您自己的Python服务器选择"customers"表中的前5条记录:importmysql.connectormydb=mysql.connector.connect(host="localhost",user="您的用户名",password="您的密码",database="我的数据库"......
  • 用python计算圆周率PI,并显示进度条
    用python计算圆周率PI‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬描述用python计算圆周率PI‪‬‪‬......
  • python tqdm 进度条 结合对象集合
    包含1.单独数据的进度条2.复杂对象集合的进度条3.结合excel读取以及业务操作做到全局进度条 fromtqdmimporttqdmimporttimefromopenpyxlimportWorkbook,load_workbook#集合类型的进度条deflist_tqdm():#生成随机数data=list()forii......
  • Python_Mooc_Stu_23_11_13_String_Random
    目录一、序列 (一)序列的索引 1.索引编号 2.序列元素索引访问3.注意事项 (二)序列的切片 1.切片格式 2.切片使用 3.参数缺省 二、序列的运算和常用处理函数 (一)序列运算 1.序列相加 2.序列相乘 3.序列对象比较 4.成员资格检查 (二)常用处理函数 1.len()......
  • Object.defineProperty(obj,key,val)不可以监听数组变化,需要做特殊处理,所以Vue3.0使用
    关于Vue双向数据绑定说法错误的是()AVue实现双向数据绑定是采用数据劫持和发布者-订阅者模式BObject.defineProperty(obj,key,val)可以监听数组变化,不需要做特殊处理CVue2.0数据劫持是利用ES5的Object.defineProperty(obj,key,val)方法来劫持每个属性的getter和setterD......
  • TD支持的库:python库、自身的python库、已经内置但需要自行引用的第三方库、第三方以外
    这是内置的第三方库asn1crypto (asn1crypto)-ParsingandserializingASN.1structuresAuthlib (authlib)-LibrarytobuildOAuthandOpenIDConnectservers.Certifi (certifi)- Root CertificatesforvalidatingthetrustworthinessofSSLcertificateswhi......
  • Newtonsoft.Json 入门介绍
    本人是C#小白,这里摘抄并整理了两位大神的文章:Newtonsoft.Json笔记-JToken、JObject、JArray详解Json基于类Newtonsoft.Json.Linq.JToken的应用简介 简单介绍如何使用Newtonsoft.Json类库和操作Json对象,这里主要介绍LinqtoJson类。Newtonsoft.Json封装类实现了JToken,直......