您现在的位置是:亿华云 > IT科技类资讯
关于Json.Dumps 的使用和解决 Object of type XXX is not JSON serializable 错误
亿华云2025-10-03 20:30:50【IT科技类资讯】1人已围观
简介JSON是一种轻量级的数据交换格式。采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器
JSON是关于一种轻量级的数据交换格式。采用完全独立于编程语言的使用文本格式来存储和表示数据。简洁和清晰的和解层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,关于同时也易于机器解析和生成,使用并有效地提升网络传输效率。和解
json.dumps() 是关于把python对象转换成json对象的一个过程,源码下载生成的使用是字符串。
MyEncoder来自网上,和解将numpy的关于数据类型进行转换。
import numpy as np
import json
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)初始化数据,通过numpy构造随机数
# 初始化数据
monthstr=[str(x)+月 for x in range(1,和解 13)]
# [1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
nphigh= np.random.randint(20,35,size=12)
# [21 32 30 27 34 25 27 30 26 22 30 22]
nplow=np.random.randint(5,20,size=12)
# [19 9 17 8 14 9 18 19 8 11 6 9]Object of type ndarray is not JSON serializable错误以及解决办法
# ---------------error TypeError: Object of type ndarray is not JSON serializable--------------
# json.dumps({ month:monthstr,high:nphigh,low:nplow})
# ---------------solution 对np.integer,np.floating,关于np.ndarray进行转码
json.dumps({ month:monthstr,使用high:nphigh,low:nplow},cls=MyEncoder)
# { "month": ["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"],
# "high": [32, 27, 28, 23, 24, 26, 29, 25, 24, 21, 31, 27],
# "low": [6, 17, 17, 6, 9, 15, 14, 18, 13, 11, 6, 5]}
# --------------------------------------------------------------Object of type int32 is not JSON serializable错误以及解决办法,这里用到list()和tolist()方法,和解可以看出两者还是有明显不同。云服务器
# list()将外层转化为list类型,内层数据类型还是原始类型。
# tolist()方法将外层内层全转化为list类型。
# ---------------------------list()和tolist()差异化---------------------------------------------
# list()将外层转化为list类型,内层数据类型还是原始类型。
# tolist()方法将外层内层全转化为list类型。
high= list(nphigh)
low=list(nplow)
# # ---------------error TypeError: Object of type int32 is not JSON serializable--------------
# json.dumps({ month:monthstr,high:high,low:low})
# TypeError: Object of type int32 is not JSON serializable
# ---------------solution 对np.integer,np.floating,np.ndarray进行转码
json.dumps({ month:monthstr,high:high,low:low},cls=MyEncoder)
# { "month": ["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"],
# "high": [33, 27, 34, 27, 29, 27, 27, 33, 33, 34, 29, 26],
# "low": [17, 19, 11, 13, 7, 6, 6, 7, 15, 5, 13, 19]}
# -----------------------------------------------------------------------------------------------
# tolist() 可正常使用
high= nphigh.tolist()
low=nplow.tolist()
json.dumps({ month:monthstr,high:high,low:low})
# { "month": ["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"],
# "high": [29, 21, 22, 22, 31, 29, 21, 20, 32, 22, 20, 23],
# "low": [17, 19, 10, 9, 17, 8, 14, 16, 18, 13, 13, 10]}正常列表的json.dumps使用方式
# 正常列表使用方法
high=[29, 33, 31, 20, 32, 32, 20, 25, 33, 20, 21, 27]
low=[8, 12, 17, 8, 6, 17, 8, 17, 14, 9, 8, 18]
json.dumps({ month:monthstr,high:high,low:low},ensure_ascii=False)
# { "month": ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
# "high": [29, 33, 31, 20, 32, 32, 20, 25, 33, 20, 21, 27],
# "low": [8, 12, 17, 8, 6, 17, 8, 17, 14, 9, 8, 18]}
json.dumps({ month:monthstr,high:high,low:low})
# { "month": ["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"],
# "high": [29, 33, 31, 20, 32, 32, 20, 25, 33, 20, 21, 27],
# "low": [8, 12, 17, 8, 6, 17, 8, 17, 14, 9, 8, 18]}很赞哦!(19)
相关文章
- 域名和网址一样吗?域名和网址有什么区别?
- CNAME:对应解析的记录值为域名地址
- 为了避免将来给我们的个人站长带来的麻烦,在选择域名后缀时,我们的站长最好省略不稳定的后缀域名,比如n,因为我们不知道策略什么时候会改变,更不用说我们将来是否还能控制这个域名了。因此,如果站长不是企业,或者有选择的话,如果不能选择域名的cn类,最好不要选择它。
- 最后提醒我们,域名到期后要及时更新域名,否则可能会丢掉域名,每次抢先注册都不会成功。
- 旧域名的外链是否会对新建站点产生影响?
- 四、一定要仔细阅读细节
- 付款完成后,您只需耐心等待,如果您注册成功,系统会提示您。这里需要注意的是,域名是一个即时产品,只有在最终付款成功时才能预订,注册成功后不能更改。
- 并非一个好米任何人都会给你一个好的价格。那你该如何用以有的好米卖出最理想的价格呢?
- 记住那句话,域名向来不属于任何人,谁先买就归谁,购买期过后,域名又不再属于任何人。
热门文章
站长推荐
用户邮箱的静态密码可能已被钓鱼和同一密码泄露。在没有收到安全警报的情况下,用户在适当的时间内不能更改密码。在此期间,攻击者可以随意输入帐户。启用辅助身份验证后,如果攻击者无法获取移动电话动态密码,他将无法进行身份验证。这样,除非用户的电子邮件密码和手机同时被盗,否则攻击者很难破解用户的邮箱。
并非一个好米任何人都会给你一个好的价格。那你该如何用以有的好米卖出最理想的价格呢?
投资各类域名就像到处打游击战,结果处处失败。因为这样,对任何一个中国域名市场的走势和价格都没有准确的把握,所以最好缩小范围,准确把握战场态势,埋伏。
网站页面结构改版,仅是页面样式发生变化,不会对排名、收录有影响;只有涉及到页面URL改变,才会对网站排名、收录有影响。
.net 适用于从事Internet相关的网络服务的机构或公司
最后提醒我们,域名到期后要及时更新域名,否则可能会丢掉域名,每次抢先注册都不会成功。
4.选择顶级的域名注册服务商
换新域名(重新来过)