json写入问题(TypeError:|json写入问题:TypeError: Object of type float32 is not JSON serializable)
问题描述
在将一个字典数据写入json文件时,遇到标题错误
问题分析
打印错误数据的数据类型type(),发现数据的类型为numpy.float32,python的内置类型float可以写入json,然而numpy类型的float不能写入json,所以应将numpy.float32转换成python内置的数据类型float
- 附:numpy.array同样不能写入json文件,需要将numpy.array转换成list,例如a.tolist()
使用a.item()或np.asscalar(a)将NumPy值转换为本机Python类型
import numpy as np
# examples using a.item()
type(np.float32(0).item()) #
type(np.float64(0).item()) #
type(np.uint32(0).item())#
# examples using np.asscalar(a)
type(np.asscalar(np.int16(0)))#
type(np.asscalar(np.cfloat(0)))#
type(np.asscalar(np.datetime64(0)))#
type(np.asscalar(np.timedelta64(0))) #
问题二
上面问题涉及的是一个numpy值,将其转换成python内置类型即可,然而又遇到一个新问题,一个list,里面的每个元素都是numpy.int32类型,将其写入json报错:TypeError: Object of type int32 is not JSON serializable
问题分析
受问题一的启发,我将list中的每个元素都用item函数转换成python的内置类型,然而依旧报错:TypeError: Object of type int32 is not JSON serializable
问题解决
【json写入问题(TypeError:|json写入问题:TypeError: Object of type float32 is not JSON serializable)】先将list转换成numpy.array,在将numpy.array转换成list
import numpy as np
import json
b=np.array(a).tolist()
json_str=json.dumps(b)
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- jhipster|jhipster 升级无效问题
- “精神病患者”的角度问题
- 解决SpringBoot引用别的模块无法注入的问题
- Hive常见问题汇总
- 姚老师互动问答会|姚老师互动问答会 # 问题001(如何更有智慧的和身边人分享金刚智慧())
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- 【教育故事】|【教育故事】 一个“问题学生”的蜕变
- 蓝桥杯试题
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片